diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..4682b2136 --- /dev/null +++ b/404.html @@ -0,0 +1,17 @@ + + + + + +Page Not Found | Nethermind Documentation + + + + + +
+
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/css/styles.b1e8c39c.css b/assets/css/styles.b1e8c39c.css new file mode 100644 index 000000000..620e96023 --- /dev/null +++ b/assets/css/styles.b1e8c39c.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e8555;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q>:last-child,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.sidebarItemTitle_pO2u,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:#0000004d}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_b6E3,.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.features_t9lD{align-items:center;display:flex;padding:2rem 0;width:100%}.buttons_AeoN,.row_kvGa{align-items:center;display:flex}.featureSvg_GfXr{height:200px;width:200px}.row_kvGa{flex-wrap:wrap;justify-content:center}.col_NUvg{flex:1;max-width:50%}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{justify-content:center}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.blogPostFooterDetailsFull_mRVl{flex-direction:column}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:768px){.col_NUvg{max-width:100%}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/images/ScreenShot2022-06-15at9.12.21am-e640269ee4675d39ce45be4891fd7791.png b/assets/images/ScreenShot2022-06-15at9.12.21am-e640269ee4675d39ce45be4891fd7791.png new file mode 100644 index 000000000..59ef18000 Binary files /dev/null and b/assets/images/ScreenShot2022-06-15at9.12.21am-e640269ee4675d39ce45be4891fd7791.png differ diff --git a/assets/images/ScreenShot2022-06-15at9.20.16am-17a84f7e8fc7aa9cfbbde1df5c45676a.png b/assets/images/ScreenShot2022-06-15at9.20.16am-17a84f7e8fc7aa9cfbbde1df5c45676a.png new file mode 100644 index 000000000..45538d8d0 Binary files /dev/null and b/assets/images/ScreenShot2022-06-15at9.20.16am-17a84f7e8fc7aa9cfbbde1df5c45676a.png differ diff --git a/assets/images/ScreenShot2022-06-15at9.40.05am-c33b4582a1c26d688dcc661b2201657b.png b/assets/images/ScreenShot2022-06-15at9.40.05am-c33b4582a1c26d688dcc661b2201657b.png new file mode 100644 index 000000000..d93079b7c Binary files /dev/null and b/assets/images/ScreenShot2022-06-15at9.40.05am-c33b4582a1c26d688dcc661b2201657b.png differ diff --git a/assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png b/assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png new file mode 100644 index 000000000..b3df354a5 Binary files /dev/null and b/assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png differ diff --git a/assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png b/assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png new file mode 100644 index 000000000..28b60f75c Binary files /dev/null and b/assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png differ diff --git a/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg b/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg new file mode 100644 index 000000000..11bda0928 Binary files /dev/null and b/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg differ diff --git a/assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png b/assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png new file mode 100644 index 000000000..3c5bf524d Binary files /dev/null and b/assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png differ diff --git a/assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png b/assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png new file mode 100644 index 000000000..4eeb5658f Binary files /dev/null and b/assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png differ diff --git a/assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png b/assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png new file mode 100644 index 000000000..00aa41d88 Binary files /dev/null and b/assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png differ diff --git a/assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png b/assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png new file mode 100644 index 000000000..b1be5c310 Binary files /dev/null and b/assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png differ diff --git a/assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png b/assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png new file mode 100644 index 000000000..866375212 Binary files /dev/null and b/assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png differ diff --git a/assets/images/image(1)(1)-189062dc7b4785de36663335c7a397fc.png b/assets/images/image(1)(1)-189062dc7b4785de36663335c7a397fc.png new file mode 100644 index 000000000..a99c09503 Binary files /dev/null and b/assets/images/image(1)(1)-189062dc7b4785de36663335c7a397fc.png differ diff --git a/assets/images/image(10)(1)(1)(1)(1)-988f55319637247e197816aeccc650b8.png b/assets/images/image(10)(1)(1)(1)(1)-988f55319637247e197816aeccc650b8.png new file mode 100644 index 000000000..08b8cc3dc Binary files /dev/null and b/assets/images/image(10)(1)(1)(1)(1)-988f55319637247e197816aeccc650b8.png differ diff --git a/assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png b/assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png new file mode 100644 index 000000000..5b04bb649 Binary files /dev/null and b/assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png differ diff --git a/assets/images/image(20)-8af7ea539a4bc0f32dd5b8860b496ec8.png b/assets/images/image(20)-8af7ea539a4bc0f32dd5b8860b496ec8.png new file mode 100644 index 000000000..99a120a8b Binary files /dev/null and b/assets/images/image(20)-8af7ea539a4bc0f32dd5b8860b496ec8.png differ diff --git a/assets/images/image(26)-2e877f27155a67cfd995c39ff39d8604.png b/assets/images/image(26)-2e877f27155a67cfd995c39ff39d8604.png new file mode 100644 index 000000000..425555b92 Binary files /dev/null and b/assets/images/image(26)-2e877f27155a67cfd995c39ff39d8604.png differ diff --git a/assets/images/image(29)-40080dde89bd64b9f96a5867aae82fa8.png b/assets/images/image(29)-40080dde89bd64b9f96a5867aae82fa8.png new file mode 100644 index 000000000..8f1b8eaca Binary files /dev/null and b/assets/images/image(29)-40080dde89bd64b9f96a5867aae82fa8.png differ diff --git a/assets/images/image(3)-914d4735c8b6a9a2377e1b12418b2361.png b/assets/images/image(3)-914d4735c8b6a9a2377e1b12418b2361.png new file mode 100644 index 000000000..7e7b93d24 Binary files /dev/null and b/assets/images/image(3)-914d4735c8b6a9a2377e1b12418b2361.png differ diff --git a/assets/images/image(30)-ac87f6bdbf310375c851da28724cd3e6.png b/assets/images/image(30)-ac87f6bdbf310375c851da28724cd3e6.png new file mode 100644 index 000000000..14c2f60ff Binary files /dev/null and b/assets/images/image(30)-ac87f6bdbf310375c851da28724cd3e6.png differ diff --git a/assets/images/image(37)-af8260f3a196744f9d905fb241639318.png b/assets/images/image(37)-af8260f3a196744f9d905fb241639318.png new file mode 100644 index 000000000..8b9b9be7f Binary files /dev/null and b/assets/images/image(37)-af8260f3a196744f9d905fb241639318.png differ diff --git a/assets/images/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)-c9b49618aaf2f51030bdec0769a57ceb.png b/assets/images/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)-c9b49618aaf2f51030bdec0769a57ceb.png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/assets/images/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)-c9b49618aaf2f51030bdec0769a57ceb.png differ diff --git a/assets/images/image(4)-dea5ebfed3e2257f6e1e8be58a9e0f44.png b/assets/images/image(4)-dea5ebfed3e2257f6e1e8be58a9e0f44.png new file mode 100644 index 000000000..e8af91fcd Binary files /dev/null and b/assets/images/image(4)-dea5ebfed3e2257f6e1e8be58a9e0f44.png differ diff --git a/assets/images/image(40)-24f70da3a03116753afec64d65e74337.png b/assets/images/image(40)-24f70da3a03116753afec64d65e74337.png new file mode 100644 index 000000000..13b963402 Binary files /dev/null and b/assets/images/image(40)-24f70da3a03116753afec64d65e74337.png differ diff --git a/assets/images/image(41)-e6e63f8d188704efcde4649de2b5d710.png b/assets/images/image(41)-e6e63f8d188704efcde4649de2b5d710.png new file mode 100644 index 000000000..5eb66e937 Binary files /dev/null and b/assets/images/image(41)-e6e63f8d188704efcde4649de2b5d710.png differ diff --git a/assets/images/image(42)-86a8200b2e08d00ce1813db4c87d6bee.png b/assets/images/image(42)-86a8200b2e08d00ce1813db4c87d6bee.png new file mode 100644 index 000000000..904544b2a Binary files /dev/null and b/assets/images/image(42)-86a8200b2e08d00ce1813db4c87d6bee.png differ diff --git a/assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png b/assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png new file mode 100644 index 000000000..b551e2b83 Binary files /dev/null and b/assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png differ diff --git a/assets/images/image(47)-c0ea255942059467dc54ab9fe90ba5b9.png b/assets/images/image(47)-c0ea255942059467dc54ab9fe90ba5b9.png new file mode 100644 index 000000000..013fa88e9 Binary files /dev/null and b/assets/images/image(47)-c0ea255942059467dc54ab9fe90ba5b9.png differ diff --git a/assets/images/image(48)-ec5d67bdc210fdcabe4ebba56d329b8d.png b/assets/images/image(48)-ec5d67bdc210fdcabe4ebba56d329b8d.png new file mode 100644 index 000000000..bc92c1673 Binary files /dev/null and b/assets/images/image(48)-ec5d67bdc210fdcabe4ebba56d329b8d.png differ diff --git a/assets/images/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2)-7508822115952af46849c50e765d6a28.png b/assets/images/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2)-7508822115952af46849c50e765d6a28.png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/assets/images/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2)-7508822115952af46849c50e765d6a28.png differ diff --git a/assets/images/image(50)-1eb7d4161b9549003f13002394103636.png b/assets/images/image(50)-1eb7d4161b9549003f13002394103636.png new file mode 100644 index 000000000..d773fc7eb Binary files /dev/null and b/assets/images/image(50)-1eb7d4161b9549003f13002394103636.png differ diff --git a/assets/images/image(51)-a507d652dffbf56997e624985c12b5df.png b/assets/images/image(51)-a507d652dffbf56997e624985c12b5df.png new file mode 100644 index 000000000..b8d20948e Binary files /dev/null and b/assets/images/image(51)-a507d652dffbf56997e624985c12b5df.png differ diff --git a/assets/images/image(52)-fb378f0035d75b9f148b207273baf948.png b/assets/images/image(52)-fb378f0035d75b9f148b207273baf948.png new file mode 100644 index 000000000..2dfd1ec5e Binary files /dev/null and b/assets/images/image(52)-fb378f0035d75b9f148b207273baf948.png differ diff --git a/assets/images/image(55)-a08e1cba38e7d803616236beb059eefc.png b/assets/images/image(55)-a08e1cba38e7d803616236beb059eefc.png new file mode 100644 index 000000000..48a28973b Binary files /dev/null and b/assets/images/image(55)-a08e1cba38e7d803616236beb059eefc.png differ diff --git a/assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png b/assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png new file mode 100644 index 000000000..566d17222 Binary files /dev/null and b/assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png differ diff --git a/assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png b/assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png new file mode 100644 index 000000000..22466bda4 Binary files /dev/null and b/assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png differ diff --git a/assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png b/assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png new file mode 100644 index 000000000..f9fb3640a Binary files /dev/null and b/assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png differ diff --git a/assets/images/image(61)-4a7650d3cb287d936f5e64433ff88fde.png b/assets/images/image(61)-4a7650d3cb287d936f5e64433ff88fde.png new file mode 100644 index 000000000..20cc4b2eb Binary files /dev/null and b/assets/images/image(61)-4a7650d3cb287d936f5e64433ff88fde.png differ diff --git a/assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png b/assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png new file mode 100644 index 000000000..3cda05163 Binary files /dev/null and b/assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png differ diff --git a/assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png b/assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png new file mode 100644 index 000000000..90e757408 Binary files /dev/null and b/assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png differ diff --git a/assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png b/assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png new file mode 100644 index 000000000..9b8e98259 Binary files /dev/null and b/assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png differ diff --git a/assets/images/image(8)-c167de574195bd72de2680358499de50.png b/assets/images/image(8)-c167de574195bd72de2680358499de50.png new file mode 100644 index 000000000..738eba5eb Binary files /dev/null and b/assets/images/image(8)-c167de574195bd72de2680358499de50.png differ diff --git a/assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png b/assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png new file mode 100644 index 000000000..3d758192d Binary files /dev/null and b/assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png differ diff --git a/assets/js/003b20fb.16c89777.js b/assets/js/003b20fb.16c89777.js new file mode 100644 index 000000000..dc0d32026 --- /dev/null +++ b/assets/js/003b20fb.16c89777.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8392],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>m});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var s=n.createContext({}),N=function(t){var e=n.useContext(s),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},d=function(t){var e=N(t.components);return n.createElement(s.Provider,{value:e},t.children)},f="mdxType",c={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},p=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,s=t.parentName,d=o(t,["components","mdxType","originalType","parentName"]),f=N(a),p=r,m=f["".concat(s,".").concat(p)]||f[p]||c[p]||l;return a?n.createElement(m,i(i({ref:e},d),{},{components:a})):n.createElement(m,i({ref:e},d))}));function m(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=p;var o={};for(var s in e)hasOwnProperty.call(e,s)&&(o[s]=e[s]);o.originalType=t,o[f]="string"==typeof t?t:r,i[1]=o;for(var N=2;N{a.r(e),a.d(e,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>l,metadata:()=>o,toc:()=>N});var n=a(7462),r=(a(7294),a(3905));const l={},i="Sync",o={unversionedId:"fundamentals/configuration/sync",id:"fundamentals/configuration/sync",title:"Sync",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/sync.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/sync",permalink:"/docs/fundamentals/configuration/sync",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/sync.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Seq",permalink:"/docs/fundamentals/configuration/seq"},next:{title:"TraceStore",permalink:"/docs/fundamentals/configuration/tracestore"}},s={},N=[],d={toc:N},f="wrapper";function c(t){let{components:e,...a}=t;return(0,r.kt)(f,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"sync"},"Sync"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AncientBodiesBarrier"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[EXPERIMENTAL]"," Defines the earliest body downloaded in fast sync when DownloadBodiesInFastSync is enabled. Actual values used will be Math.Max(1, Math.Min(PivotNumber, AncientBodiesBarrier))"),(0,r.kt)("td",{parentName:"tr",align:"left"},"0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AncientReceiptsBarrier"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[EXPERIMENTAL]"," Defines the earliest receipts downloaded in fast sync when DownloadReceiptsInFastSync is enabled. Actual value used will be Math.Max(1, Math.Min(PivotNumber, Math.Max(AncientBodiesBarrier, AncientReceiptsBarrier)))"),(0,r.kt)("td",{parentName:"tr",align:"left"},"0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlocksDbTuneDbMode"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[EXPERIMENTAL]"," Optimize db for write during sync just for blocks db. Useful for turning on blobs file."),(0,r.kt)("td",{parentName:"tr",align:"left"},"EnableBlobFiles")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DownloadBodiesInFastSync"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then the block bodies will be downloaded in the Fast Sync mode."),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DownloadHeadersInFastSync"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If set to 'false' then fast sync will only download recent blocks."),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DownloadReceiptsInFastSync"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then the receipts will be downloaded in the Fast Sync mode. This will slow down the process by a few hours but will allow you to interact with dApps that execute extensive historical logs searches (like Maker CDPs)."),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FastBlocks"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_FASTBLOCKS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then in the Fast Sync mode blocks will be first downloaded from the provided PivotNumber downwards. This allows for parallelization of requests with many sync peers and with no need to worry about syncing a valid branch (syncing downwards to 0). You need to enter the pivot block number, hash and total difficulty from a trusted source (you can use etherscan and confirm with other sources if you wan to change it)."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FastSync"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_FASTSYNC"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then the Fast Sync (eth/63) synchronization algorithm will be used."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FastSyncCatchUpHeightDelta"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Relevant only if 'FastSync' is 'true'. If set to a value, then it will set a minimum height threshold limit up to which FullSync, if already on, will stay on when chain will be behind network. If this limit will be exceeded, it will switch back to FastSync. In normal usage we do not recommend setting this to less than 32 as this can cause issues with chain reorgs. Please note that last 2 blocks will always be processed in FullSync, so setting it to less than 2 will have no effect."),(0,r.kt)("td",{parentName:"tr",align:"left"},"8192")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FixReceipts"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_FIXRECEIPTS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[ONLY FOR MISSING RECEIPTS ISSUE]"," Turns on receipts validation that checks for ones that might be missing due to previous bug. It downloads them from network if needed.If used please check that PivotNumber is same as original used when syncing the node as its used as a cut-off point."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FixTotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[ONLY TO FIX INCORRECT TOTAL DIFFICULTY ISSUE]"," Recalculates total difficulty starting from FixTotalDifficultyStartingBlock to FixTotalDifficultyLastBlock."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FixTotalDifficultyLastBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[ONLY TO FIX INCORRECT TOTAL DIFFICULTY ISSUE]"," Last block which total difficulty will be recalculated. If set to null equals to best known block"),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FixTotalDifficultyStartingBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[ONLY TO FIX INCORRECT TOTAL DIFFICULTY ISSUE]"," First block which total difficulty will be recalculated."),(0,r.kt)("td",{parentName:"tr",align:"left"},"1")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxAttemptsToUpdatePivot"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Max number of attempts (seconds) to update pivot block basing on Forkchoice message from Consensus Layer. Only for PoS chains."),(0,r.kt)("td",{parentName:"tr",align:"left"},"900")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxProcessingThreads"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[TECHNICAL]"," Specify max num of thread used for processing. Default is same as logical core count."),(0,r.kt)("td",{parentName:"tr",align:"left"},"0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"NetworkingEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_NETWORKINGENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'false' then the node does not connect to peers."),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"NonValidatorNode"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_NONVALIDATORNODE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[EXPERIMENTAL]"," Only for non validator nodes! If set to true, DownloadReceiptsInFastSync and/or DownloadBodiesInFastSync can be set to false."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PivotHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_PIVOTHASH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash of the pivot block for the Fast Blocks sync."),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PivotNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_PIVOTNUMBER"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Number of the pivot block for the Fast Blocks sync."),(0,r.kt)("td",{parentName:"tr",align:"left"},"0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PivotTotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Total Difficulty of the pivot block for the Fast Blocks sync (not - this is total difficulty and not difficulty)."),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SnapSync"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_SNAPSYNC"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Enables SNAP sync protocol."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SnapSyncAccountRangePartitionCount"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Number of account range partition to create. Increase snap sync request concurrency. Value must be between 1 to 256 (inclusive)."),(0,r.kt)("td",{parentName:"tr",align:"left"},"8")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StrictMode"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_STRICTMODE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Disable some optimization and run a more extensive sync. Useful for broken sync state but normally not needed"),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SynchronizationEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'false' then the node does not download/process new blocks."),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TuneDbMode"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_TUNEDBMODE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[EXPERIMENTAL]"," Optimize db for write during sync. Significantly reduce total writes written and some sync time if you are not network limited."),(0,r.kt)("td",{parentName:"tr",align:"left"},"Default")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"UseGethLimitsInFastBlocks"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then in the Fast Blocks mode Nethermind generates smaller requests to avoid Geth from disconnecting. On the Geth heavy networks (mainnet) it is desired while on Parity or Nethermind heavy networks (Goerli, AuRa) it slows down the sync by a factor of ~4"),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WitnessProtocolEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SYNCCONFIG_WITNESSPROTOCOLENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Enables witness protocol."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0116ccdc.309618ae.js b/assets/js/0116ccdc.309618ae.js new file mode 100644 index 000000000..3bef61f63 --- /dev/null +++ b/assets/js/0116ccdc.309618ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7476],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>f});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),u=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=u(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="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,o=e.mdxType,i=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=o,f=p["".concat(c,".").concat(m)]||p[m]||d[m]||i;return n?r.createElement(f,a(a({ref:t},l),{},{components:n})):r.createElement(f,a({ref:t},l))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;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 u=2;u{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var r=n(7462),o=(n(7294),n(3905));const i={description:"Security measures that should be taken before running Nethermind Node on Ethereum Mainnet"},a="Security",s={unversionedId:"fundamentals/security",id:"fundamentals/security",title:"Security",description:"Security measures that should be taken before running Nethermind Node on Ethereum Mainnet",source:"@site/docs/02-fundamentals/05-security.md",sourceDirName:"02-fundamentals",slug:"/fundamentals/security",permalink:"/docs/fundamentals/security",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/05-security.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{description:"Security measures that should be taken before running Nethermind Node on Ethereum Mainnet"},sidebar:"tutorialSidebar",previous:{title:"Wallet",permalink:"/docs/fundamentals/configuration/wallet"},next:{title:"Logging Configuration",permalink:"/docs/fundamentals/logs/logging-configuration"}},c={},u=[],l={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"security"},"Security"),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\ud83d\udce2 ",(0,o.kt)("strong",{parentName:"p"},"DO NOT")," use Nethermind wallet / signers for mainnet ETH handling!")),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\ud83d\udce2 JSON RPC endpoint (port ",(0,o.kt)("inlineCode",{parentName:"p"},"8545"),") should ",(0,o.kt)("strong",{parentName:"p"},"NOT")," be exposed publicly (should be behind the firewall).")),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"\ud83d\udce2The private key from which the node ID is derived is stored on disk (",(0,o.kt)("strong",{parentName:"p"},"NOT")," protected by password).")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Nethermind is thoroughly tested but the more popular it will get the more likely it will be the target of client-specific attacks. Generally you should always consider running backup client nodes implemented by a different team for any critical operations.")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"For non-mainnet signing you can use dev wallet configurations.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/01a85c17.92faa9e9.js b/assets/js/01a85c17.92faa9e9.js new file mode 100644 index 000000000..640b59155 --- /dev/null +++ b/assets/js/01a85c17.92faa9e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4013],{9058:(e,t,a)=>{a.d(t,{Z:()=>E});var l=a(7294),r=a(6010),n=a(7961),s=a(7524),i=a(9960),c=a(5999);const m={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};function o(e){let{sidebar:t}=e;return l.createElement("aside",{className:"col col--3"},l.createElement("nav",{className:(0,r.Z)(m.sidebar,"thin-scrollbar"),"aria-label":(0,c.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},l.createElement("div",{className:(0,r.Z)(m.sidebarItemTitle,"margin-bottom--md")},t.title),l.createElement("ul",{className:(0,r.Z)(m.sidebarItemList,"clean-list")},t.items.map((e=>l.createElement("li",{key:e.permalink,className:m.sidebarItem},l.createElement(i.Z,{isNavLink:!0,to:e.permalink,className:m.sidebarItemLink,activeClassName:m.sidebarItemLinkActive},e.title)))))))}var u=a(3102);function g(e){let{sidebar:t}=e;return l.createElement("ul",{className:"menu__list"},t.items.map((e=>l.createElement("li",{key:e.permalink,className:"menu__list-item"},l.createElement(i.Z,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active"},e.title)))))}function b(e){return l.createElement(u.Zo,{component:g,props:e})}function d(e){let{sidebar:t}=e;const a=(0,s.i)();return t?.items.length?"mobile"===a?l.createElement(b,{sidebar:t}):l.createElement(o,{sidebar:t}):null}function E(e){const{sidebar:t,toc:a,children:s,...i}=e,c=t&&t.items.length>0;return l.createElement(n.Z,i,l.createElement("div",{className:"container margin-vert--lg"},l.createElement("div",{className:"row"},l.createElement(d,{sidebar:t}),l.createElement("main",{className:(0,r.Z)("col",{"col--7":c,"col--9 col--offset-1":!c}),itemScope:!0,itemType:"http://schema.org/Blog"},s),a&&l.createElement("div",{className:"col col--2"},a))))}},1223:(e,t,a)=>{a.r(t),a.d(t,{default:()=>E});var l=a(7294),r=a(6010),n=a(5999);const s=()=>(0,n.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var i=a(1944),c=a(5281),m=a(9058),o=a(3008);const u={tag:"tag_Nnez"};function g(e){let{letterEntry:t}=e;return l.createElement("article",null,l.createElement("h2",null,t.letter),l.createElement("ul",{className:"padding--none"},t.tags.map((e=>l.createElement("li",{key:e.permalink,className:u.tag},l.createElement(o.Z,e))))),l.createElement("hr",null))}function b(e){let{tags:t}=e;const a=function(e){const t={};return Object.values(e).forEach((e=>{const a=function(e){return e[0].toUpperCase()}(e.label);t[a]??=[],t[a].push(e)})),Object.entries(t).sort(((e,t)=>{let[a]=e,[l]=t;return a.localeCompare(l)})).map((e=>{let[t,a]=e;return{letter:t,tags:a.sort(((e,t)=>e.label.localeCompare(t.label)))}}))}(t);return l.createElement("section",{className:"margin-vert--lg"},a.map((e=>l.createElement(g,{key:e.letter,letterEntry:e}))))}var d=a(197);function E(e){let{tags:t,sidebar:a}=e;const n=s();return l.createElement(i.FG,{className:(0,r.Z)(c.k.wrapper.blogPages,c.k.page.blogTagsListPage)},l.createElement(i.d,{title:n}),l.createElement(d.Z,{tag:"blog_tags_list"}),l.createElement(m.Z,{sidebar:a},l.createElement("h1",null,n),l.createElement(b,{tags:t})))}},3008:(e,t,a)=>{a.d(t,{Z:()=>i});var l=a(7294),r=a(6010),n=a(9960);const s={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function i(e){let{permalink:t,label:a,count:i}=e;return l.createElement(n.Z,{href:t,className:(0,r.Z)(s.tag,i?s.tagWithCount:s.tagRegular)},a,i&&l.createElement("span",null,i))}}}]); \ No newline at end of file diff --git a/assets/js/026e6f12.b7977d2d.js b/assets/js/026e6f12.b7977d2d.js new file mode 100644 index 000000000..78b2e1fab --- /dev/null +++ b/assets/js/026e6f12.b7977d2d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[90],{3905:(t,e,n)=>{n.d(e,{Zo:()=>f,kt:()=>u});var r=n(7294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}var c=r.createContext({}),p=function(t){var e=r.useContext(c),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},f=function(t){var e=p(t.components);return r.createElement(c.Provider,{value:e},t.children)},m="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(t,e){var n=t.components,a=t.mdxType,o=t.originalType,c=t.parentName,f=l(t,["components","mdxType","originalType","parentName"]),m=p(n),d=a,u=m["".concat(c,".").concat(d)]||m[d]||s[d]||o;return n?r.createElement(u,i(i({ref:e},f),{},{components:n})):r.createElement(u,i({ref:e},f))}));function u(t,e){var n=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var c in e)hasOwnProperty.call(e,c)&&(l[c]=e[c]);l.originalType=t,l[m]="string"==typeof t?t:a,i[1]=l;for(var p=2;p{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const o={},i="Bloom",l={unversionedId:"fundamentals/configuration/bloom",id:"fundamentals/configuration/bloom",title:"Bloom",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/bloom.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/bloom",permalink:"/docs/fundamentals/configuration/bloom",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/bloom.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Blocks",permalink:"/docs/fundamentals/configuration/blocks"},next:{title:"EthStats",permalink:"/docs/fundamentals/configuration/ethstats"}},c={},p=[],f={toc:p},m="wrapper";function s(t){let{components:e,...n}=t;return(0,a.kt)(m,(0,r.Z)({},f,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"bloom"},"Bloom"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Index"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_BLOOMCONFIG_INDEX"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines whether the Bloom index is used. Bloom index speeds up rpc log searches."),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"IndexLevelBucketSizes"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines multipliers for index levels. Can be tweaked per chain to boost performance."),(0,a.kt)("td",{parentName:"tr",align:"left"},"[4, 8, 8]")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Migration"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_BLOOMCONFIG_MIGRATION"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines if migration of previously downloaded blocks to Bloom index will be done."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"MigrationStatistics"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines if migration statistics are to be calculated and output."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/031793e1.ed2d5306.js b/assets/js/031793e1.ed2d5306.js new file mode 100644 index 000000000..79aa1c4d2 --- /dev/null +++ b/assets/js/031793e1.ed2d5306.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1633],{2511:e=>{e.exports=JSON.parse('{"label":"facebook","permalink":"/blog/tags/facebook","allTagsPath":"/blog/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/0403e71a.b57a9193.js b/assets/js/0403e71a.b57a9193.js new file mode 100644 index 000000000..738b22236 --- /dev/null +++ b/assets/js/0403e71a.b57a9193.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8922],{3905:(t,e,r)=>{r.d(e,{Zo:()=>c,kt:()=>u});var n=r(7294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function l(t){for(var e=1;e=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}var s=n.createContext({}),p=function(t){var e=n.useContext(s),r=e;return t&&(r="function"==typeof t?t(e):l(l({},e),t)),r},c=function(t){var e=p(t.components);return n.createElement(s.Provider,{value:e},t.children)},f="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},d=n.forwardRef((function(t,e){var r=t.components,a=t.mdxType,o=t.originalType,s=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),f=p(r),d=a,u=f["".concat(s,".").concat(d)]||f[d]||m[d]||o;return r?n.createElement(u,l(l({ref:e},c),{},{components:r})):n.createElement(u,l({ref:e},c))}));function u(t,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var s in e)hasOwnProperty.call(e,s)&&(i[s]=e[s]);i.originalType=t,i[f]="string"==typeof t?t:a,l[1]=i;for(var p=2;p{r.r(e),r.d(e,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const o={},l="EthStats",i={unversionedId:"fundamentals/configuration/ethstats",id:"fundamentals/configuration/ethstats",title:"EthStats",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/ethstats.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/ethstats",permalink:"/docs/fundamentals/configuration/ethstats",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/ethstats.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Bloom",permalink:"/docs/fundamentals/configuration/bloom"},next:{title:"HealthChecks",permalink:"/docs/fundamentals/configuration/healthchecks"}},s={},p=[],c={toc:p},f="wrapper";function m(t){let{components:e,...r}=t;return(0,a.kt)(f,(0,n.Z)({},c,r,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"ethstats"},"EthStats"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Contact"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ETHSTATSCONFIG_CONTACT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Node owner contact details displayed on the ethstats page."),(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("a",{parentName:"td",href:"mailto:hello@nethermind.io"},"hello@nethermind.io"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ETHSTATSCONFIG_ENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If 'true' then EthStats publishing gets enabled."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Name"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ETHSTATSCONFIG_NAME"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Node name displayed on the given ethstats server."),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nethermind")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Secret"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ETHSTATSCONFIG_SECRET"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Password for publishing to a given ethstats server."),(0,a.kt)("td",{parentName:"tr",align:"left"},"secret")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Server"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ETHSTATSCONFIG_SERVER"),(0,a.kt)("td",{parentName:"tr",align:"left"},"EthStats server wss://hostname:port/api/"),(0,a.kt)("td",{parentName:"tr",align:"left"},"ws://localhost:3000/api")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/068062df.ebf103e0.js b/assets/js/068062df.ebf103e0.js new file mode 100644 index 000000000..93565fb61 --- /dev/null +++ b/assets/js/068062df.ebf103e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1288],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),d=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},m=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),p=d(a),c=r,k=p["".concat(s,".").concat(c)]||p[c]||u[c]||i;return a?n.createElement(k,l(l({ref:t},m),{},{components:a})):n.createElement(k,l({ref:t},m))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=c;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:r,l[1]=o;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var n=a(7462),r=(a(7294),a(3905));const i={description:"Run Nethermind on a platform of your choice"},l="System Requirements",o={unversionedId:"getting-started/system-requirements",id:"getting-started/system-requirements",title:"System Requirements",description:"Run Nethermind on a platform of your choice",source:"@site/docs/01-getting-started/system-requirements.md",sourceDirName:"01-getting-started",slug:"/getting-started/system-requirements",permalink:"/docs/getting-started/system-requirements",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/01-getting-started/system-requirements.md",tags:[],version:"current",frontMatter:{description:"Run Nethermind on a platform of your choice"},sidebar:"tutorialSidebar",previous:{title:"Networks",permalink:"/docs/getting-started/networks"},next:{title:"Fundamentals",permalink:"/docs/category/fundamentals"}},s={},d=[{value:"Supported operating systems",id:"supported-operating-systems",level:2},{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Disk requirements",id:"disk-requirements",level:3},{value:"Database growth",id:"database-growth",level:4},{value:"Disk speed",id:"disk-speed",level:4},{value:"Sync modes and disk usage",id:"sync-modes-and-disk-usage",level:4},{value:"Database size with different configuration",id:"database-size-with-different-configuration",level:4},{value:"Database in details",id:"database-in-details",level:4}],m={toc:d},p="wrapper";function u(e){let{components:t,...a}=e;return(0,r.kt)(p,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"system-requirements"},"System Requirements"),(0,r.kt)("p",null,"Learn about the hardware and software requirements to run Nethermind."," "),(0,r.kt)("h2",{id:"supported-operating-systems"},"Supported operating systems"),(0,r.kt)("p",null,"Nethermind supports a broad range of modern ",(0,r.kt)("em",{parentName:"p"},"64-bit")," operating systems including but not limited to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Linux"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Alpine (3.15 and later)"),(0,r.kt)("li",{parentName:"ul"},"CentOS (Stream 8 and later)"),(0,r.kt)("li",{parentName:"ul"},"Debian (10 and later)"),(0,r.kt)("li",{parentName:"ul"},"Fedora (37 and later)"),(0,r.kt)("li",{parentName:"ul"},"openSUSE (15.4 and later)"),(0,r.kt)("li",{parentName:"ul"},"RHEL (8 and later)"),(0,r.kt)("li",{parentName:"ul"},"SLES (15 and later)"),(0,r.kt)("li",{parentName:"ul"},"Ubuntu (18.04 and later)"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Windows"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Windows 10 and later"),(0,r.kt)("li",{parentName:"ul"},"Windows Server 2012 and later"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"macOS")," (10.15 Catalina and later)")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"As of now, Nethermind for Windows doesn't support AArch64 (ARM64) architecture.")),(0,r.kt)("h2",{id:"hardware-requirements"},"Hardware requirements"),(0,r.kt)("p",null,"Suggested requirements can be found below."),(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},"Network"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Memory"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Cores"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mainnet")),(0,r.kt)("td",{parentName:"tr",align:"center"},"16"),(0,r.kt)("td",{parentName:"tr",align:"center"},"4")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mainnet Archive")),(0,r.kt)("td",{parentName:"tr",align:"center"},"128"),(0,r.kt)("td",{parentName:"tr",align:"center"},"8")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Goerli")),(0,r.kt)("td",{parentName:"tr",align:"center"},"8"),(0,r.kt)("td",{parentName:"tr",align:"center"},"2")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Goerli Archive")),(0,r.kt)("td",{parentName:"tr",align:"center"},"8"),(0,r.kt)("td",{parentName:"tr",align:"center"},"4")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Gnosis")),(0,r.kt)("td",{parentName:"tr",align:"center"},"16"),(0,r.kt)("td",{parentName:"tr",align:"center"},"2")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"EnergyWeb")),(0,r.kt)("td",{parentName:"tr",align:"center"},"8"),(0,r.kt)("td",{parentName:"tr",align:"center"},"2")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Volta")),(0,r.kt)("td",{parentName:"tr",align:"center"},"8"),(0,r.kt)("td",{parentName:"tr",align:"center"},"2")))),(0,r.kt)("h3",{id:"disk-requirements"},"Disk requirements"),(0,r.kt)("p",null,"Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as ",(0,r.kt)("strong",{parentName:"p"},"NVMe or a fast SSD"),". However, ",(0,r.kt)("strong",{parentName:"p"},"2\nTB is recommended")," to minimize maintenance requirements. To choose a concrete disk model we recommend\nchecking ",(0,r.kt)("a",{parentName:"p",href:"https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good"},"Great and less great SSDs for Ethereum nodes"),".\\\n\\\nChoosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking.\nNonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic."),(0,r.kt)("h4",{id:"database-growth"},"Database growth"),(0,r.kt)("p",null,"Nethermind requires approximately 504 GB of disk space (as of May 2023) after a fresh Ethereum Mainnet sync using\ndefault parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most\noptimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of\napproximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to\nbring it back to its optimal database size. For more info on managing node disk growth,\nsee ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/how-to-reduce-database-size/"},"How to reduce database size"),". \\\nHaving a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain\noutgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement\nfor more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice\nbetween 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements."),(0,r.kt)("h4",{id:"disk-speed"},"Disk speed"),(0,r.kt)("p",null,"The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your\nvalidator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for\nboth write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully."),(0,r.kt)("h4",{id:"sync-modes-and-disk-usage"},"Sync modes and disk usage"),(0,r.kt)("p",null,"A node can be run using different syncing options, and each option has different characteristics of disk space usage."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Archive node.")," This mode stores the full historical state for all blocks. As of July 2023, an archive node requires\nat least 14 TB of disk space, and it grows by approximately 60 GB per week."," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Ancient barriers.")," Nethermind allows you to specify how many old block bodies and receipts you want to store. By\ndefault, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the\ndeployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC\nrequests will not have access to block bodies and receipts older than the ancient barrier."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"NonValidatorMode.")," This mode drops all historical receipts and bodies, but it cannot be used as a validator node.")),(0,r.kt)("p",null,"For more detailed information about the various sync modes,\nsee ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/sync-modes"},"Sync modes"),"."),(0,r.kt)("h4",{id:"database-size-with-different-configuration"},"Database size with different configuration"),(0,r.kt)("p",null,"The below table presents the Nethermind database size after fresh sync with different configurations and networks (as of\nMay 2023)."),(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},"Network/configuration"),(0,r.kt)("th",{parentName:"tr",align:null},"Database size after fresh sync"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Mainnet (default settings)"),(0,r.kt)("td",{parentName:"tr",align:null},"504 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Mainnet without ancient barriers"),(0,r.kt)("td",{parentName:"tr",align:null},"664 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Mainnet archive"),(0,r.kt)("td",{parentName:"tr",align:null},"14 TB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Mainnet without old bodies and receipts"),(0,r.kt)("td",{parentName:"tr",align:null},"178 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Gnosis"),(0,r.kt)("td",{parentName:"tr",align:null},"112 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Goerli"),(0,r.kt)("td",{parentName:"tr",align:null},"240 GB")))),(0,r.kt)("h4",{id:"database-in-details"},"Database in details"),(0,r.kt)("p",null,"A freshly fast synced Mainnet disk space with details about concrete databases (as of May 2023)."),(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},"Database"),(0,r.kt)("th",{parentName:"tr",align:null},"Mainnet"),(0,r.kt)("th",{parentName:"tr",align:null},"Mainnet with Ancient Barriers"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"State"),(0,r.kt)("td",{parentName:"tr",align:null},"161 GB"),(0,r.kt)("td",{parentName:"tr",align:null},"161 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Receipts"),(0,r.kt)("td",{parentName:"tr",align:null},"152 GB"),(0,r.kt)("td",{parentName:"tr",align:null},"104 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Blocks"),(0,r.kt)("td",{parentName:"tr",align:null},"334 GB"),(0,r.kt)("td",{parentName:"tr",align:null},"222 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Bloom"),(0,r.kt)("td",{parentName:"tr",align:null},"5.3 GB"),(0,r.kt)("td",{parentName:"tr",align:null},"5.3 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Headers"),(0,r.kt)("td",{parentName:"tr",align:null},"8.1 GB"),(0,r.kt)("td",{parentName:"tr",align:null},"8.1 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Code"),(0,r.kt)("td",{parentName:"tr",align:null},"3 GB"),(0,r.kt)("td",{parentName:"tr",align:null},"3 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Other"),(0,r.kt)("td",{parentName:"tr",align:null},"..."),(0,r.kt)("td",{parentName:"tr",align:null},"..")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Total")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"664 GB")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"504 GB"))))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/096bfee4.3f3fee8a.js b/assets/js/096bfee4.3f3fee8a.js new file mode 100644 index 000000000..0236176c9 --- /dev/null +++ b/assets/js/096bfee4.3f3fee8a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7178],{5010:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/facebook","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/09a763c4.5cf6b8bf.js b/assets/js/09a763c4.5cf6b8bf.js new file mode 100644 index 000000000..b6f98e00d --- /dev/null +++ b/assets/js/09a763c4.5cf6b8bf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3418],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),c=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(u.Provider,{value:t},e.children)},f="mdxType",s={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,a=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),f=c(n),m=a,d=f["".concat(u,".").concat(m)]||f[m]||s[m]||i;return n?r.createElement(d,o(o({ref:t},p),{},{components:n})):r.createElement(d,o({ref:t},p))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[f]="string"==typeof e?e:a,o[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>s,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const i={},o="Plugin",l={unversionedId:"fundamentals/configuration/plugin",id:"fundamentals/configuration/plugin",title:"Plugin",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/plugin.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/plugin",permalink:"/docs/fundamentals/configuration/plugin",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/plugin.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Network",permalink:"/docs/fundamentals/configuration/network"},next:{title:"Pruning",permalink:"/docs/fundamentals/configuration/pruning"}},u={},c=[],p={toc:c},f="wrapper";function s(e){let{components:t,...n}=e;return(0,a.kt)(f,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"plugin"},"Plugin"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"PluginOrder"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PLUGINCONFIG_PLUGINORDER"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Order of plugin initialization"),(0,a.kt)("td",{parentName:"tr",align:"left"},"[Clique, Aura, Ethash, AuRaMerge, Merge, MEV, HealthChecks, Hive]")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0be924aa.44c8505a.js b/assets/js/0be924aa.44c8505a.js new file mode 100644 index 000000000..69443f60c --- /dev/null +++ b/assets/js/0be924aa.44c8505a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5881],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var m=r.createContext({}),f=function(e){var t=r.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=f(e.components);return r.createElement(m.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,m=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=f(n),s=a,u=c["".concat(m,".").concat(s)]||c[s]||d[s]||i;return n?r.createElement(u,l(l({ref:t},p),{},{components:n})):r.createElement(u,l({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=s;var o={};for(var m in t)hasOwnProperty.call(t,m)&&(o[m]=t[m]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var f=2;f{n.r(t),n.d(t,{assets:()=>m,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>f});var r=n(7462),a=(n(7294),n(3905));const i={},l="Mev",o={unversionedId:"fundamentals/configuration/mev",id:"fundamentals/configuration/mev",title:"Mev",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/mev.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/mev",permalink:"/docs/fundamentals/configuration/mev",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/mev.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/docs/fundamentals/configuration/metrics"},next:{title:"Mining",permalink:"/docs/fundamentals/configuration/mining"}},m={},f=[],p={toc:f},c="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"mev"},"Mev"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"BundleHorizon"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MEVCONFIG_BUNDLEHORIZON"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines how long MEV bundles will be kept in memory by clients"),(0,a.kt)("td",{parentName:"tr",align:"left"},"3600")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"BundlePoolSize"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MEVCONFIG_BUNDLEPOOLSIZE"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines the maximum number of MEV bundles that can be kept in memory by clients"),(0,a.kt)("td",{parentName:"tr",align:"left"},"200")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MEVCONFIG_ENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines whether the MEV bundles are allowed."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"MaxMergedBundles"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MEVCONFIG_MAXMERGEDBUNDLES"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines the maximum number of MEV bundles to be included within a single block"),(0,a.kt)("td",{parentName:"tr",align:"left"},"1")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TrustedRelays"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MEVCONFIG_TRUSTEDRELAYS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines the list of trusted relay addresses to receive megabundles from as a comma separated string"),(0,a.kt)("td",{parentName:"tr",align:"left"})))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0c92c0a5.dcbb7eae.js b/assets/js/0c92c0a5.dcbb7eae.js new file mode 100644 index 000000000..4733b64a9 --- /dev/null +++ b/assets/js/0c92c0a5.dcbb7eae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4405],{3905:(t,e,r)=>{r.d(e,{Zo:()=>f,kt:()=>u});var n=r(7294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function l(t){for(var e=1;e=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}var p=n.createContext({}),c=function(t){var e=n.useContext(p),r=e;return t&&(r="function"==typeof t?t(e):l(l({},e),t)),r},f=function(t){var e=c(t.components);return n.createElement(p.Provider,{value:e},t.children)},m="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},d=n.forwardRef((function(t,e){var r=t.components,a=t.mdxType,o=t.originalType,p=t.parentName,f=i(t,["components","mdxType","originalType","parentName"]),m=c(r),d=a,u=m["".concat(p,".").concat(d)]||m[d]||s[d]||o;return r?n.createElement(u,l(l({ref:e},f),{},{components:r})):n.createElement(u,l({ref:e},f))}));function u(t,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[m]="string"==typeof t?t:a,l[1]=i;for(var c=2;c{r.r(e),r.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var n=r(7462),a=(r(7294),r(3905));const o={},l="TxPool",i={unversionedId:"fundamentals/configuration/txpool",id:"fundamentals/configuration/txpool",title:"TxPool",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/txpool.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/txpool",permalink:"/docs/fundamentals/configuration/txpool",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/txpool.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"TraceStore",permalink:"/docs/fundamentals/configuration/tracestore"},next:{title:"Wallet",permalink:"/docs/fundamentals/configuration/wallet"}},p={},c=[],f={toc:c},m="wrapper";function s(t){let{components:e,...r}=t;return(0,a.kt)(m,(0,n.Z)({},f,r,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"txpool"},"TxPool"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TXPOOLCONFIG_GASLIMIT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Max transaction gas allowed."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"HashCacheSize"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Max number of cached hashes of already known transactions.It is set automatically by the memory hint."),(0,a.kt)("td",{parentName:"tr",align:"left"},"524288")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"PeerNotificationThreshold"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines average percent of tx hashes from persistent broadcast send to peer together with hashes of last added txs."),(0,a.kt)("td",{parentName:"tr",align:"left"},"5")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ReportMinutes"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TXPOOLCONFIG_REPORTMINUTES"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Minutes between reporting on current state of tx pool."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TXPOOLCONFIG_SIZE"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Max number of transactions held in mempool (more transactions in mempool mean more memory used"),(0,a.kt)("td",{parentName:"tr",align:"left"},"2048")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0d2058e7.eee969ef.js b/assets/js/0d2058e7.eee969ef.js new file mode 100644 index 000000000..3515ec78d --- /dev/null +++ b/assets/js/0d2058e7.eee969ef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3755],{3905:(t,e,a)=>{a.d(e,{Zo:()=>k,kt:()=>f});var r=a(7294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function i(t){for(var e=1;e=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var p=r.createContext({}),m=function(t){var e=r.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},k=function(t){var e=m(t.components);return r.createElement(p.Provider,{value:e},t.children)},o="mdxType",N={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},c=r.forwardRef((function(t,e){var a=t.components,n=t.mdxType,l=t.originalType,p=t.parentName,k=d(t,["components","mdxType","originalType","parentName"]),o=m(a),c=n,f=o["".concat(p,".").concat(c)]||o[c]||N[c]||l;return a?r.createElement(f,i(i({ref:e},k),{},{components:a})):r.createElement(f,i({ref:e},k))}));function f(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var l=a.length,i=new Array(l);i[0]=c;var d={};for(var p in e)hasOwnProperty.call(e,p)&&(d[p]=e[p]);d.originalType=t,d[o]="string"==typeof t?t:n,i[1]=d;for(var m=2;m{a.d(e,{Z:()=>i});var r=a(7294),n=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(t){let{children:e,hidden:a,className:i}=t;return r.createElement("div",{role:"tabpanel",className:(0,n.Z)(l.tabItem,i),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>T});var r=a(7462),n=a(7294),l=a(6010),i=a(2466),d=a(6550),p=a(1980),m=a(7392),k=a(12);function o(t){return function(t){return n.Children.map(t,(t=>{if(!t||(0,n.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:r,default:n}}=t;return{value:e,label:a,attributes:r,default:n}}))}function N(t){const{values:e,children:a}=t;return(0,n.useMemo)((()=>{const t=e??o(a);return function(t){const e=(0,m.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in . Every value needs to be unique.`)}(t),t}),[e,a])}function c(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function f(t){let{queryString:e=!1,groupId:a}=t;const r=(0,d.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,p._X)(l),(0,n.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(r.location.search);e.set(l,t),r.replace({...r.location,search:e.toString()})}),[l,r])]}function s(t){const{defaultValue:e,queryString:a=!1,groupId:r}=t,l=N(t),[i,d]=(0,n.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!c({value:e,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=a.find((t=>t.default))??a[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:e,tabValues:l}))),[p,m]=f({queryString:a,groupId:r}),[o,s]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[r,l]=(0,k.Nk)(a);return[r,(0,n.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:r}),b=(()=>{const t=p??o;return c({value:t,tabValues:l})?t:null})();(0,n.useLayoutEffect)((()=>{b&&d(b)}),[b]);return{selectedValue:i,selectValue:(0,n.useCallback)((t=>{if(!c({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);d(t),m(t),s(t)}),[m,s,l]),tabValues:l}}var b=a(2389);const u={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(t){let{className:e,block:a,selectedValue:d,selectValue:p,tabValues:m}=t;const k=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.o5)(),N=t=>{const e=t.currentTarget,a=k.indexOf(e),r=m[a].value;r!==d&&(o(e),p(r))},c=t=>{let e=null;switch(t.key){case"Enter":N(t);break;case"ArrowRight":{const a=k.indexOf(t.currentTarget)+1;e=k[a]??k[0];break}case"ArrowLeft":{const a=k.indexOf(t.currentTarget)-1;e=k[a]??k[k.length-1];break}}e?.focus()};return n.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},m.map((t=>{let{value:e,label:a,attributes:i}=t;return n.createElement("li",(0,r.Z)({role:"tab",tabIndex:d===e?0:-1,"aria-selected":d===e,key:e,ref:t=>k.push(t),onKeyDown:c,onClick:N},i,{className:(0,l.Z)("tabs__item",u.tabItem,i?.className,{"tabs__item--active":d===e})}),a??e)})))}function y(t){let{lazy:e,children:a,selectedValue:r}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===r));return t?(0,n.cloneElement)(t,{className:"margin-top--md"}):null}return n.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,n.cloneElement)(t,{key:e,hidden:t.props.value!==r}))))}function h(t){const e=s(t);return n.createElement("div",{className:(0,l.Z)("tabs-container",u.tabList)},n.createElement(g,(0,r.Z)({},t,e)),n.createElement(y,(0,r.Z)({},t,e)))}function T(t){const e=(0,b.Z)();return n.createElement(h,(0,r.Z)({key:String(e)},t))}},6291:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>k,contentTitle:()=>p,default:()=>f,frontMatter:()=>d,metadata:()=>m,toc:()=>o});var r=a(7462),n=(a(7294),a(3905)),l=a(4866),i=a(5162);const d={},p="trace",m={unversionedId:"nethermind-utilities/cli/trace",id:"nethermind-utilities/cli/trace",title:"trace",description:"trace.block",source:"@site/docs/06-nethermind-utilities/cli/trace.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/trace",permalink:"/docs/nethermind-utilities/cli/trace",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/trace.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"system",permalink:"/docs/nethermind-utilities/cli/system"},next:{title:"txpool",permalink:"/docs/nethermind-utilities/cli/txpool"}},k={},o=[{value:"trace.block",id:"traceblock",level:2},{value:"trace.call",id:"tracecall",level:2},{value:"trace.filter",id:"tracefilter",level:2},{value:"trace.rawTransaction",id:"tracerawtransaction",level:2},{value:"trace.replayBlockTransactions",id:"tracereplayblocktransactions",level:2},{value:"trace.replayTransaction",id:"tracereplaytransaction",level:2},{value:"trace.transaction",id:"tracetransaction",level:2}],N={toc:o},c="wrapper";function f(t){let{components:e,...a}=t;return(0,n.kt)(c,(0,r.Z)({},N,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"trace"},"trace"),(0,n.kt)("h2",{id:"traceblock"},"trace.block"),(0,n.kt)("p",null,"Returns traces created at given block."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"trace.block(numberOrTag)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"numberOrTag"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)(l.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},"trace.block(latest)\n"))),(0,n.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "action": { "callType": "call","from": "0x31b98d14007bdee637298086988a0bbd31184523","gas": "0x0","input": "0x","to": "0x0e8cda5d7ebda67606a9b296a9dd4351bca1d263","value": "0x1043561a882930000" },"blockHash": "0x6537c92f1fae55d9ea9b0fb25744262114b09e50ac320d7d839830f8c4d723a0","blockNumber": 8969312,"result": { "gasUsed": "0x0","output": "0x" },"subtraces": 0,"traceAddress": [ ],"transactionHash": "0xf4860fc1dc22404b85db7d666dfae65dec7cdcb196837a67ffa992d709f78b9e","transactionPosition": 11,"type": "call" },{ "action": { "callType": "call","from": "0x71c95151c960aa3976b462ff41adb328790f110d","gas": "0x7205","input": "0x095ea7b3000000000000000000000000c5992c0e0a3267c7f75493d0f717201e26be35f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","to": "0x5592ec0cfb4dbc12d3ab100b257153436a1f0fea","value": "0x0" },"blockHash": "0x6537c92f1fae55d9ea9b0fb25744262114b09e50ac320d7d839830f8c4d723a0","blockNumber": 8969312,"result": { "gasUsed": "0x5fdd","output": "0x0000000000000000000000000000000000000000000000000000000000000001" },"subtraces": 0,"traceAddress": [ ],"transactionHash": "0xec216ca7e754ea289dd59fc7f9f2c9a5b90668afb5a52d49ee15c3c5fd559b3b","transactionPosition": 12,"type": "call" }\n'))),(0,n.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,n.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/trace#trace_block"},"See also JSON RPC trace_block")),(0,n.kt)("h2",{id:"tracecall"},"trace.call"),(0,n.kt)("p",null,"Traces a call, returning the traces"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"trace.call(call, traceTypes, blockParameter)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"call"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"traceTypes"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array")),(0,n.kt)("td",{parentName:"tr",align:"left"},"Possible values : ",'["VmTrace", "StateDiff", "Trace", "Rewards", "All"]')),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTxTraceFromReplay object")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)(l.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},"trace.call(call, traceTypes, blockParameter)\n"))),(0,n.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"From"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"To"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"V"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"S"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"R"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TxType")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,n.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityTxTraceFromReplay")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Output"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"VmTrace"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityVmTrace object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Action"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTraceAction object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StateChanges"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityVmTrace")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Code"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Operations"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityVmOperationTrace[] object"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityTraceAction")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TraceAddress"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CallType"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"IncludeInTrace"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"IsPrecompiled"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CreationMethod"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"From"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"To"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Result"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTraceResult object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Subtraces"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"RewardType"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/trace#trace_call"},"See also JSON RPC trace_call")),(0,n.kt)("h2",{id:"tracefilter"},"trace.filter"),(0,n.kt)("p",null,"Return all traces of the given filter"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"trace.filter(traceFilterForRpc)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"traceFilterForRpc"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"TraceFilterForRpc object")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)(l.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},"trace.filter(traceFilterForRpc)\n"))),(0,n.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"TraceFilterForRpc")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"FromBlock"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"ToBlock"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"FromAddress"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address[] object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"ToAddress"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address[] object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"After"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Count"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Address[]")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Zero"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"SystemUser"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Bytes"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Item"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))))))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/trace#trace_filter"},"See also JSON RPC trace_filter")),(0,n.kt)("h2",{id:"tracerawtransaction"},"trace.rawTransaction"),(0,n.kt)("p",null,"Traces a call to eth_sendRawTransaction without making the call, returning the traces"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"trace.rawTransaction(data, traceTypes)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"data"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"traceTypes"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array")),(0,n.kt)("td",{parentName:"tr",align:"left"},"Possible values : ",'["VmTrace", "StateDiff", "Trace", "Rewards", "All"]')))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTxTraceFromReplay object")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)(l.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},"trace.rawTransaction(data, traceTypes)\n"))),(0,n.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},'"output": "0x","stateDiff": null,"trace":[{"action":{"callType":"call","from":"0xc451c26cc24c25e46b148ac4716804c12c34e7d2","gas":"0x0","input":"0x","to":"0xb943b13292086848d8180d75c73361107920bb1a","value":"0x0"},"result":{"gasUsed":"0x0","output":"0x"},"subtraces":0,"traceAddress":[],"type":"call"}],"vmTrace":null\n'))),(0,n.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityTxTraceFromReplay")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Output"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"VmTrace"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityVmTrace object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Action"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTraceAction object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StateChanges"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityVmTrace")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Code"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Operations"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityVmOperationTrace[] object"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityTraceAction")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TraceAddress"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CallType"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"IncludeInTrace"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"IsPrecompiled"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CreationMethod"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"From"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"To"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Result"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTraceResult object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Subtraces"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"RewardType"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/trace#trace_rawtransaction"},"See also JSON RPC trace_rawTransaction")),(0,n.kt)("h2",{id:"tracereplayblocktransactions"},"trace.replayBlockTransactions"),(0,n.kt)("p",null,"Replays all transactions in a block returning the requested traces for each transaction."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"trace.replayBlockTransactions(blockParameter, traceTypes)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"traceTypes"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array")),(0,n.kt)("td",{parentName:"tr",align:"left"},"Possible values : ",'["VmTrace", "StateDiff", "Trace", "Rewards", "All"]')))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)(l.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},"trace.replayBlockTransactions(blockParameter, traceTypes)\n"))),(0,n.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},'[ { "output": "0x0000000000000000000000000000000000000000000000000000000000000001","stateDiff": null,"trace": [ { "action": { "callType": "call","from": "0x37f207b3ebda37de11ad2b6d306464e313c4841a","gas": "0x3c36","input": "0xa9059cbb000000000000000000000000d20d2f4c0b595abedef821a4157b0b990a37dae60000000000000000000000000000000000000000000000008ac7230489e80000","to": "0x59a524d1f5dcbde3224fd42171795283596a8103","value": "0x0" },"result": { "gasUsed": "0x3c36","output": "0x0000000000000000000000000000000000000000000000000000000000000001" },"subtraces": 0,"traceAddress": [ ],"type": "call" } ],"transactionHash": "0x17dc0fef36bb997c79ee2a0a126d059227000a2d47c9bbd1f49b5902a4e7385a","vmTrace": null }, (...) ]\n'))),(0,n.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,n.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/trace#trace_replayblocktransactions"},"See also JSON RPC trace_replayBlockTransactions")),(0,n.kt)("h2",{id:"tracereplaytransaction"},"trace.replayTransaction"),(0,n.kt)("p",null,"Replays a transaction, returning the traces."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"trace.replayTransaction(txHash, traceTypes)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"txHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"traceTypes"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array")),(0,n.kt)("td",{parentName:"tr",align:"left"},"Possible values : ",'["VmTrace", "StateDiff", "Trace", "Rewards", "All"]')))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTxTraceFromReplay object")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)(l.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},"trace.replayTransaction(txHash, traceTypes)\n"))),(0,n.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "output": "0x","stateDiff": null,"trace": [ { "action": { "callType": "call","from": "0x3c436c8ec40e0679fe64168545812ac13220f150","gas": "0xc118","input": "0xd46eb119","to": "0x9e00de186f33e9fac9e28d69127f7f637b96c177","value": "0xde0b6b3a7640000" },"result": { "gasUsed": "0xc118","output": "0x" },"subtraces": 4,"traceAddress": [ ],"type": "call" },{ "action": { "callType": "call","from": "0x9e00de186f33e9fac9e28d69127f7f637b96c177","gas": "0xa965","input": "0x40c10f190000000000000000000000009e00de186f33e9fac9e28d69127f7f637b96c1770000000000000000000000000000000000000000000000000de0b6b3a7640000","to": "0x766cd52cb91f4d2d7ea8b4c175aff0aba3696be1","value": "0x0" },"result": { "gasUsed": "0x76b8","output": "0x" },"subtraces": 0,"traceAddress": [ 0 ],"type": "call" }, (...)} ] }\n'))),(0,n.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityTxTraceFromReplay")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Output"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"VmTrace"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityVmTrace object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Action"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTraceAction object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StateChanges"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityVmTrace")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Code"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Operations"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityVmOperationTrace[] object"))))),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"ParityTraceAction")),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TraceAddress"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CallType"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"IncludeInTrace"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"IsPrecompiled"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CreationMethod"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"From"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"To"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Data"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Result"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"ParityTraceResult object"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Subtraces"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Address"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"RewardType"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/trace#trace_replaytransaction"},"See also JSON RPC trace_replayTransaction")),(0,n.kt)("h2",{id:"tracetransaction"},"trace.transaction"),(0,n.kt)("p",null,"Returns all traces of given transaction"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"trace.transaction(txHash)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"txHash"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Hash")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"Array")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)(l.Z,{mdxType:"Tabs"},(0,n.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},'trace.transaction(["0x203abf19610ce15bc509d4b341e907ff8c5a8287ae61186fd4da82146408c28c"])\n'))),(0,n.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml"},'[ { "action": { "callType": "call","from": "0x3c436c8ec40e0679fe64168545812ac13220f150","gas": "0xc118","input": "0xd46eb119","to": "0x9e00de186f33e9fac9e28d69127f7f637b96c177","value": "0xde0b6b3a7640000" },"blockHash": "0xf40b4c9faaeaf116a50380ce3795297bc02068b062f1797cd507875347c3372e","blockNumber": 8970132,"result": { "gasUsed": "0xc118","output": "0x" },"subtraces": 4,"traceAddress": [ ],"transactionHash": "0x203abf19610ce15bc509d4b341e907ff8c5a8287ae61186fd4da82146408c28c","transactionPosition": 9,"type": "call" },(...) ]\n')))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/trace#trace_transaction"},"See also JSON RPC trace_transaction")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0e71e10c.412624f6.js b/assets/js/0e71e10c.412624f6.js new file mode 100644 index 000000000..2b6d6535c --- /dev/null +++ b/assets/js/0e71e10c.412624f6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2031],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(7294);function i(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 a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=d(n),h=i,k=c["".concat(s,".").concat(h)]||c[h]||m[h]||o;return n?a.createElement(k,r(r({ref:t},p),{},{components:n})):a.createElement(k,r({ref:t},p))}));function k(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,r[1]=l;for(var d=2;d{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var a=n(7462),i=(n(7294),n(3905));const o={description:"A quick start example for G\xf6rli Testnet Nethermind synchronization"},r="Explaining Nethermind logs",l={unversionedId:"fundamentals/logs/logs",id:"fundamentals/logs/logs",title:"Explaining Nethermind logs",description:"A quick start example for G\xf6rli Testnet Nethermind synchronization",source:"@site/docs/02-fundamentals/06-logs/logs.md",sourceDirName:"02-fundamentals/06-logs",slug:"/fundamentals/logs/logs",permalink:"/docs/fundamentals/logs/logs",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/06-logs/logs.md",tags:[],version:"current",frontMatter:{description:"A quick start example for G\xf6rli Testnet Nethermind synchronization"},sidebar:"tutorialSidebar",previous:{title:"Logging Configuration",permalink:"/docs/fundamentals/logs/logging-configuration"},next:{title:"Database",permalink:"/docs/fundamentals/database"}},s={},d=[],p={toc:d},c="wrapper";function m(e){let{components:t,...o}=e;return(0,i.kt)(c,(0,a.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"explaining-nethermind-logs"},"Explaining Nethermind logs"),(0,i.kt)("p",null,"You can check the supported operating systems, architectures and hardware requirements\nhere: ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/system-requirements"},"system-requirements.md")),(0,i.kt)("p",null,"After the node starts, you will see some initial info about the node and then the sync will start. G\xf6rli fast sync uses\na ",(0,i.kt)("inlineCode",{parentName:"p"},"fast blocks")," sync mode initially. The ",(0,i.kt)("inlineCode",{parentName:"p"},"fast blocks")," sync picks some known ",(0,i.kt)("inlineCode",{parentName:"p"},"pivot block")," from the past and\ndownloads ",(0,i.kt)("inlineCode",{parentName:"p"},"headers"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"bodies"),", and ",(0,i.kt)("inlineCode",{parentName:"p"},"receipts")," downwards all the way to ",(0,i.kt)("inlineCode",{parentName:"p"},"genesis block"),". All blocks from 0 to\nthe ",(0,i.kt)("inlineCode",{parentName:"p"},"pivot block")," are showed as ",(0,i.kt)("inlineCode",{parentName:"p"},"Old Headers")," in the ",(0,i.kt)("inlineCode",{parentName:"p"},"fast blocks sync")," logs. The console display shows the number\ngrowing from 0 to pivot, but this is just to make the display more user-friendly."),(0,i.kt)("p",null,"You will see some information about the sync progress, like below:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Shows the number of already downloaded ",(0,i.kt)("inlineCode",{parentName:"li"},"headers"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"bodies")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"receipts")," under the name ",(0,i.kt)("inlineCode",{parentName:"li"},"Downloaded")," out of all to\nbe downloaded in the fast blocks stage."),(0,i.kt)("li",{parentName:"ol"},"Shows the current queue of already downloaded ",(0,i.kt)("inlineCode",{parentName:"li"},"blocks"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"headers")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"receipts")," waiting for being saved to the\ndatabase."),(0,i.kt)("li",{parentName:"ol"},"Shows the current download speed (blocks per second - bps)."),(0,i.kt)("li",{parentName:"ol"},"Shows the average download speed (blocks per second - bps).")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Fast blocks sync logs",src:n(7535).Z,width:"1219",height:"572"})),(0,i.kt)("p",null,"When the fast blocks stage finishes, there will be some period of downloading blocks between the ",(0,i.kt)("inlineCode",{parentName:"p"},"pivot")," and\nthe",(0,i.kt)("inlineCode",{parentName:"p"},"latest blocks")," which will have some additional info:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Shows the last entry from the fast blocks stage."),(0,i.kt)("li",{parentName:"ol"},"Shows the mode transition moment."),(0,i.kt)("li",{parentName:"ol"},"Displays the speed (in blocks per second) of all ",(0,i.kt)("inlineCode",{parentName:"li"},"headers"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"bodies")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"receipts")," at the same time."),(0,i.kt)("li",{parentName:"ol"},"Additional info will appear every 30000 blocks with information about the G\xf6rli epoch being stored.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"G\xf6rli fast sync logs",src:n(6833).Z,width:"1528",height:"643"})),(0,i.kt)("p",null,"After the ",(0,i.kt)("inlineCode",{parentName:"p"},"fast sync")," part finished, the node will transition to the ",(0,i.kt)("inlineCode",{parentName:"p"},"state sync stage")," when the ",(0,i.kt)("inlineCode",{parentName:"p"},"state trie")," is being\ndownloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few\nhours)."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Total elapsed time in ",(0,i.kt)("inlineCode",{parentName:"li"},"state sync")," is displayed."),(0,i.kt)("li",{parentName:"ol"},"The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on\nG\xf6rli around 800MB)."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"branches")," stands for the percentage of downloaded branches."),(0,i.kt)("li",{parentName:"ol"},"Download speed in kilobytes per second is displayed."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"accounts")," stands for the number of accounts data downloaded already."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"nodes")," stands for the number of ",(0,i.kt)("inlineCode",{parentName:"li"},"Patricia trie nodes")," downloaded by the sync process."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"diagnostic")," shows the time spent in the DB write / read access. The higher the value, the worse. It may get much\nworse if you restart the node during the sync process, as we need to recreate some caches then by reading data from\nthe DB.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"G\xf6rli state sync logs",src:n(523).Z,width:"1528",height:"742"})),(0,i.kt)("p",null,"When the state sync is nearing completion, you may see a series of ",(0,i.kt)("inlineCode",{parentName:"p"},"branch sync")," information reloading many times from\n0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block\nrapidly:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"G\xf6rli branch sync logs",src:n(6103).Z,width:"1441",height:"572"})),(0,i.kt)("p",null,"At some point, the entire state is downloaded and the node enters the ",(0,i.kt)("inlineCode",{parentName:"p"},"full sync")," mode and will allow you to issue CLI /\nWeb3 queries and send / receive transactions\ud83e\udd73"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"root")," is saved at the moment when the entire ",(0,i.kt)("inlineCode",{parentName:"li"},"Patricia trie")," is downloaded."),(0,i.kt)("li",{parentName:"ol"},"We also clearly state that the node transitions to the ",(0,i.kt)("inlineCode",{parentName:"li"},"full sync"),"."),(0,i.kt)("li",{parentName:"ol"},"When you see the block being processed, then you are in the ",(0,i.kt)("inlineCode",{parentName:"li"},"full sync")," and the newly arrived block is being\ncalculated."),(0,i.kt)("li",{parentName:"ol"},"Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced\nblock, and data download speeds.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"G\xf6rli full sync logs",src:n(7428).Z,width:"1441",height:"572"})),(0,i.kt)("p",null,"Also, every now and then, a peer report will appear like below:"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(78).Z,width:"2560",height:"1337"})),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"First bracket is for Allocated contexts. It has possible values of ",(0,i.kt)("inlineCode",{parentName:"li"},"H")," for Headers, ",(0,i.kt)("inlineCode",{parentName:"li"},"B")," for Bodies, ",(0,i.kt)("inlineCode",{parentName:"li"},"R")," for\nReceipts, ",(0,i.kt)("inlineCode",{parentName:"li"},"N")," for State, ",(0,i.kt)("inlineCode",{parentName:"li"},"S")," for Snap, and ",(0,i.kt)("inlineCode",{parentName:"li"},"W")," for Witness."),(0,i.kt)("li",{parentName:"ol"},"Second bracket is for Sleeping contexts. It has possible values of ",(0,i.kt)("inlineCode",{parentName:"li"},"H")," for Headers, ",(0,i.kt)("inlineCode",{parentName:"li"},"B")," for Bodies, ",(0,i.kt)("inlineCode",{parentName:"li"},"R")," for\nReceipts, ",(0,i.kt)("inlineCode",{parentName:"li"},"N")," for State, ",(0,i.kt)("inlineCode",{parentName:"li"},"S")," for Snap, and ",(0,i.kt)("inlineCode",{parentName:"li"},"W")," for Witness."),(0,i.kt)("li",{parentName:"ol"},"Third bracket contains Peer Info."),(0,i.kt)("li",{parentName:"ol"},"Fourth bracket is for Speeds as Follows:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Latency"),(0,i.kt)("li",{parentName:"ul"},"Headers Transfer"),(0,i.kt)("li",{parentName:"ul"},"Bodies Transfer"),(0,i.kt)("li",{parentName:"ul"},"Receipts Transfer"),(0,i.kt)("li",{parentName:"ul"},"Node Data Transfer"),(0,i.kt)("li",{parentName:"ul"},"Snap Ranges Transfer"))),(0,i.kt)("li",{parentName:"ol"},"Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version.")))}m.isMDXComponent=!0},78:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/Screenshot2022-08-10205144-bfd083dd36a793971757cf3f339f0ec5.png"},6103:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/getting_started_26-95f467f0f83edd0b39d11b5d0ea338a5.png"},6833:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/getting_started_7-cfece39092ef238f8e8da3b69eab7432.png"},523:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/getting_started_8-d24674b3244863f2722c9dab5cb965d1.png"},7428:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/getting_started_9-37c7f085184a8606321fe307bec67a25.png"},7535:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/getting_started_log_0-ff150d1f099976816bf5d0f90c6c22ec.png"}}]); \ No newline at end of file diff --git a/assets/js/0f34cd48.3dc2e6b6.js b/assets/js/0f34cd48.3dc2e6b6.js new file mode 100644 index 000000000..078bf9aed --- /dev/null +++ b/assets/js/0f34cd48.3dc2e6b6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7039],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=p(a),m=r,b=u["".concat(s,".").concat(m)]||u[m]||c[m]||l;return a?n.createElement(b,o(o({ref:t},d),{},{components:a})):n.createElement(b,o({ref:t},d))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:r,o[1]=i;for(var p=2;p{a.d(t,{Z:()=>o});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:a,className:o}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(7462),r=a(7294),l=a(6010),o=a(2466),i=a(6550),s=a(1980),p=a(7392),d=a(12);function u(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function c(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??u(a);return function(e){const t=(0,p.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:a}=e;const n=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,s._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function h(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=c(e),[o,i]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[s,p]=b({queryString:a,groupId:n}),[u,h]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,d.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),k=(()=>{const e=s??u;return m({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{k&&i(k)}),[k]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),p(e),h(e)}),[p,h,l]),tabValues:l}}var k=a(2389);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function N(e){let{className:t,block:a,selectedValue:i,selectValue:s,tabValues:p}=e;const d=[],{blockElementScrollPositionUntilNextRender:u}=(0,o.o5)(),c=e=>{const t=e.currentTarget,a=d.indexOf(t),n=p[a].value;n!==i&&(u(t),s(n))},m=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const a=d.indexOf(e.currentTarget)+1;t=d[a]??d[0];break}case"ArrowLeft":{const a=d.indexOf(e.currentTarget)-1;t=d[a]??d[d.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},p.map((e=>{let{value:t,label:a,attributes:o}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>d.push(e),onKeyDown:m,onClick:c},o,{className:(0,l.Z)("tabs__item",f.tabItem,o?.className,{"tabs__item--active":i===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=h(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",f.tabList)},r.createElement(N,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function v(e){const t=(0,k.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},6248:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>b,frontMatter:()=>i,metadata:()=>p,toc:()=>u});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),o=a(5162);const i={},s="net",p={unversionedId:"interacting-with-nethermind/json-rpc-api/net",id:"interacting-with-nethermind/json-rpc-api/net",title:"net",description:"net_listening",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/net.mdx",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/net",permalink:"/docs/interacting-with-nethermind/json-rpc-api/net",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/net.mdx",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"evm",permalink:"/docs/interacting-with-nethermind/json-rpc-api/evm"},next:{title:"parity",permalink:"/docs/interacting-with-nethermind/json-rpc-api/parity"}},d={},u=[{value:"net_listening",id:"net_listening",level:2},{value:"net_localAddress",id:"net_localaddress",level:2},{value:"net_localEnode",id:"net_localenode",level:2},{value:"net_peerCount",id:"net_peercount",level:2},{value:"net_version",id:"net_version",level:2}],c={toc:u},m="wrapper";function b(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"net"},"net"),(0,r.kt)("h2",{id:"net_listening"},"net_listening"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"net_listening","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"net_listening","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": true,\n "id": 1\n}\n')))),(0,r.kt)("h2",{id:"net_localaddress"},"net_localAddress"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"net_localAddress","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"net_localAddress","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x247b5f5f007fb5d50de13cfcbd4460db21c12bcb,\n "id": 1\n}\n')))),(0,r.kt)("h2",{id:"net_localenode"},"net_localEnode"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"net_localEnode","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"net_localEnode","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": enode://a9cfa3cb16b537e131b0f141b5ef0c0ab9bf0dbec7799c3fc7bf8a974ff3e74e9b3258951b285dfed07ab395049bcd65fed96116bb92561612682551ec458497@18.193.43.58:30303,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/net#net-localenode"},"See also CLI net.localEnode")),(0,r.kt)("h2",{id:"net_peercount"},"net_peerCount"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"net_peerCount","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"net_peerCount","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x11,\n "id": 1\n}\n')))),"[See also CLI net.peerCount](https://docs.nethermind.io/nethermind/nethermind-utilities/cli/net#net-peercount)",(0,r.kt)("h2",{id:"net_version"},"net_version"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"net_version","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"net_version","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 4,\n "id": 1\n}\n')))),"[See also CLI net.version](https://docs.nethermind.io/nethermind/nethermind-utilities/cli/net#net-version)")}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/108c5320.66220fc7.js b/assets/js/108c5320.66220fc7.js new file mode 100644 index 000000000..22096eadf --- /dev/null +++ b/assets/js/108c5320.66220fc7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9391],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),d=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(a),m=r,b=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return a?n.createElement(b,i(i({ref:t},c),{},{components:a})):n.createElement(b,i({ref:t},c))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var n=a(7462),r=(a(7294),a(3905));const o={description:"dbpath and databases info"},i="Database",l={unversionedId:"fundamentals/database",id:"fundamentals/database",title:"Database",description:"dbpath and databases info",source:"@site/docs/02-fundamentals/07-database.md",sourceDirName:"02-fundamentals",slug:"/fundamentals/database",permalink:"/docs/fundamentals/database",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/07-database.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{description:"dbpath and databases info"},sidebar:"tutorialSidebar",previous:{title:"Explaining Nethermind logs",permalink:"/docs/fundamentals/logs/logs"},next:{title:"How to reduce database size",permalink:"/docs/fundamentals/how-to-reduce-database-size/"}},s={},d=[],c={toc:d},p="wrapper";function u(e){let{components:t,...o}=e;return(0,r.kt)(p,(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"database"},"Database"),(0,r.kt)("p",null,"Nethermind uses the ",(0,r.kt)("a",{parentName:"p",href:"https://rocksdb.org"},"RocksDB")," database to store state. By default the database is stored in the\nsame directory where the client binaries are. You can change it by providing a ",(0,r.kt)("inlineCode",{parentName:"p"},"--baseDbPath")," config switch in the\ncommand line, e.g.",(0,r.kt)("inlineCode",{parentName:"p"},"./Nethermind.Runner --config goerli --baseDbPath /home/username/nethermind_db")),(0,r.kt)("p",null,"After Nethermind is started, you will see multiple directories appearing in the ",(0,r.kt)("em",{parentName:"p"},"baseDbPath")," directory."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Example of the DB directory on a freshly deployed Ubuntu VM with Nethermind.",src:a(2788).Z,width:"825",height:"521"})),(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},"DB Directory"),(0,r.kt)("th",{parentName:"tr",align:null},"Content"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"blockInfos"),(0,r.kt)("td",{parentName:"tr",align:null},"information about blocks at each level of the block tree (canonical chain and branches)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"blocks"),(0,r.kt)("td",{parentName:"tr",align:null},"block bodies (block transactions and uncle data)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"bloom"),(0,r.kt)("td",{parentName:"tr",align:null},"bloom indexes for fast log searches")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"canonicalHashTrie"),(0,r.kt)("td",{parentName:"tr",align:null},"LES protocol related data")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"code"),(0,r.kt)("td",{parentName:"tr",align:null},"contract bytecodes")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"discoveryNodes"),(0,r.kt)("td",{parentName:"tr",align:null},"peers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"headers"),(0,r.kt)("td",{parentName:"tr",align:null},"block headers only")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"pendingTx"),(0,r.kt)("td",{parentName:"tr",align:null},"(this DB is wiped out on each restart) 2nd level cache of pending transactions / mempool (1st level is in memory)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"peers"),(0,r.kt)("td",{parentName:"tr",align:null},"stores additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"receipts"),(0,r.kt)("td",{parentName:"tr",align:null},"transaction receipts data")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"state"),(0,r.kt)("td",{parentName:"tr",align:null},"blockchain state including accounts and contract storage (Patricia trie nodes)")))),(0,r.kt)("p",null,"You can use ",(0,r.kt)("inlineCode",{parentName:"p"},"rsync")," between your nodes to clone the database (One of our users copied entire 4.5TB archive state this\nway while the node was running and only stopped the node for the very last stage of ",(0,r.kt)("inlineCode",{parentName:"p"},"rsync")," ). You can also simply copy\nthe database between Unix and Windows systems (and most likely macOS)."))}u.isMDXComponent=!0},2788:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/image(61)-4a7650d3cb287d936f5e64433ff88fde.png"}}]); \ No newline at end of file diff --git a/assets/js/11c6555c.712c404e.js b/assets/js/11c6555c.712c404e.js new file mode 100644 index 000000000..6753a3563 --- /dev/null +++ b/assets/js/11c6555c.712c404e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9839],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>s});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 a(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 o(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var g=r.createContext({}),p=function(e){var t=r.useContext(g),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=p(e.components);return r.createElement(g.Provider,{value:t},e.children)},c="mdxType",u={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,a=e.originalType,g=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(n),m=l,s=c["".concat(g,".").concat(m)]||c[m]||u[m]||a;return n?r.createElement(s,o(o({ref:t},d),{},{components:n})):r.createElement(s,o({ref:t},d))}));function s(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var a=n.length,o=new Array(a);o[0]=m;var i={};for(var g in t)hasOwnProperty.call(t,g)&&(i[g]=t[g]);i.originalType=e,i[c]="string"==typeof e?e:l,o[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>g,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var r=n(7462),l=(n(7294),n(3905));const a={},o="Logging Configuration",i={unversionedId:"fundamentals/logs/logging-configuration",id:"fundamentals/logs/logging-configuration",title:"Logging Configuration",description:"Log config file location",source:"@site/docs/02-fundamentals/06-logs/logging-configuration.md",sourceDirName:"02-fundamentals/06-logs",slug:"/fundamentals/logs/logging-configuration",permalink:"/docs/fundamentals/logs/logging-configuration",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/06-logs/logging-configuration.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Security",permalink:"/docs/fundamentals/security"},next:{title:"Explaining Nethermind logs",permalink:"/docs/fundamentals/logs/logs"}},g={},p=[{value:"Log config file location",id:"log-config-file-location",level:2},{value:"Log config file syntax",id:"log-config-file-syntax",level:2},{value:"Config or CLI log rules",id:"config-or-cli-log-rules",level:2},{value:"Global logging override",id:"global-logging-override",level:2},{value:"JSON RPC logging level",id:"json-rpc-logging-level",level:2},{value:"Enterprise Logging",id:"enterprise-logging",level:2}],d={toc:p},c="wrapper";function u(e){let{components:t,...n}=e;return(0,l.kt)(c,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"logging-configuration"},"Logging Configuration"),(0,l.kt)("h2",{id:"log-config-file-location"},"Log config file location"),(0,l.kt)("p",null,"Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Environment Type"),(0,l.kt)("th",{parentName:"tr",align:null},"NLog.config location"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"built from src - Debug mode"),(0,l.kt)("td",{parentName:"tr",align:null},"src\\Nethermind\\Nethermind.Runner\\bin\\Debug\\netcoreapp3.1\\NLog.config")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"built from src - Release mode"),(0,l.kt)("td",{parentName:"tr",align:null},"src\\Nethermind\\Nethermind.Runner\\bin\\Release\\netcoreapp3.1\\NLog.config")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"PPA"),(0,l.kt)("td",{parentName:"tr",align:null},"/usr/share/nethermind/NLog.config")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Docker"),(0,l.kt)("td",{parentName:"tr",align:null},"/nethermind/NLog.config")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"from ",(0,l.kt)("a",{parentName:"td",href:"https://downloads.nethermind.io"},"downloads page")),(0,l.kt)("td",{parentName:"tr",align:null},"top level directory after unzipping the package")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"from ",(0,l.kt)("a",{parentName:"td",href:"https://github.com/NethermindEth/nethermind/releases"},"GitHub releases page")),(0,l.kt)("td",{parentName:"tr",align:null},"top level directory after unzipping the package")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"dAppNode"),(0,l.kt)("td",{parentName:"tr",align:null},"? ","[","to be documented]")))),(0,l.kt)("h2",{id:"log-config-file-syntax"},"Log config file syntax"),(0,l.kt)("p",null,"Detailed NLog configuration options can be found\nhere: ",(0,l.kt)("a",{parentName:"p",href:"https://nlog-project.org/config/"},"https://nlog-project.org/config/")),(0,l.kt)("h2",{id:"config-or-cli-log-rules"},"Config or CLI log rules"),(0,l.kt)("p",null,"Simple logging rules can be added through configuration file or command line argument."),(0,l.kt)("p",null,"For example this would add ",(0,l.kt)("inlineCode",{parentName:"p"},"Trace")," level logs to any logger under ",(0,l.kt)("inlineCode",{parentName:"p"},"Synchronization")," module and ",(0,l.kt)("inlineCode",{parentName:"p"},"Debug")," level logs\nfor ",(0,l.kt)("inlineCode",{parentName:"p"},"BlockTree")," from ",(0,l.kt)("inlineCode",{parentName:"p"},"Blockchain")," module:\\\n",(0,l.kt)("inlineCode",{parentName:"p"},"--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug")),(0,l.kt)("h2",{id:"global-logging-override"},"Global logging override"),(0,l.kt)("p",null,"Additionally there are global logging override that you can use temporarily:"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Command line override"),(0,l.kt)("th",{parentName:"tr",align:null},"Log level"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"./Nethermind.Runner --config mainnet --log TRACE"),(0,l.kt)("td",{parentName:"tr",align:null},"TRACE")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"./Nethermind.Runner --config mainnet --log DEBUG"),(0,l.kt)("td",{parentName:"tr",align:null},"DEBUG")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"./Nethermind.Runner --config mainnet --log INFO"),(0,l.kt)("td",{parentName:"tr",align:null},"INFO")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"./Nethermind.Runner --config mainnet --log WARN"),(0,l.kt)("td",{parentName:"tr",align:null},"WARN")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"./Nethermind.Runner --config mainnet --log ERROR"),(0,l.kt)("td",{parentName:"tr",align:null},"ERROR")))),(0,l.kt)("h2",{id:"json-rpc-logging-level"},"JSON RPC logging level"),(0,l.kt)("p",null,"This can be done by including these lines in the logging configuration file:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},'\n\n\n')),(0,l.kt)("h2",{id:"enterprise-logging"},"Enterprise Logging"),(0,l.kt)("p",null,"See how to configure Seq ",(0,l.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/enterprise/seq"},"here")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/14eb3368.35f83f8e.js b/assets/js/14eb3368.35f83f8e.js new file mode 100644 index 000000000..f3509ffb1 --- /dev/null +++ b/assets/js/14eb3368.35f83f8e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9817],{1310:(e,t,a)=>{a.d(t,{Z:()=>E});var n=a(7462),r=a(7294),i=a(6010),l=a(5281),s=a(3438),c=a(8596),o=a(9960),m=a(5999),d=a(4996);function u(e){return r.createElement("svg",(0,n.Z)({viewBox:"0 0 24 24"},e),r.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const h={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function b(){const e=(0,d.Z)("/");return r.createElement("li",{className:"breadcrumbs__item"},r.createElement(o.Z,{"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},r.createElement(u,{className:h.breadcrumbHomeIcon})))}const v={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function g(e){let{children:t,href:a,isLast:n}=e;const i="breadcrumbs__link";return n?r.createElement("span",{className:i,itemProp:"name"},t):a?r.createElement(o.Z,{className:i,href:a,itemProp:"item"},r.createElement("span",{itemProp:"name"},t)):r.createElement("span",{className:i},t)}function p(e){let{children:t,active:a,index:l,addMicrodata:s}=e;return r.createElement("li",(0,n.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,i.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,r.createElement("meta",{itemProp:"position",content:String(l+1)}))}function E(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?r.createElement("nav",{className:(0,i.Z)(l.k.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},r.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&r.createElement(b,null),e.map(((t,a)=>{const n=a===e.length-1;return r.createElement(p,{key:a,active:n,index:a,addMicrodata:!!t.href},r.createElement(g,{href:t.href,isLast:n},t.label))})))):null}},4228:(e,t,a)=>{a.r(t),a.d(t,{default:()=>x});var n=a(7294),r=a(1944),i=a(3438),l=a(4996),s=a(6010),c=a(9960),o=a(3919),m=a(5999);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:a}=e;return n.createElement(c.Z,{href:t,className:(0,s.Z)("card padding--lg",d.cardContainer)},a)}function h(e){let{href:t,icon:a,title:r,description:i}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,s.Z)("text--truncate",d.cardTitle),title:r},a," ",r),i&&n.createElement("p",{className:(0,s.Z)("text--truncate",d.cardDescription),title:i},i))}function b(e){let{item:t}=e;const a=(0,i.Wl)(t);return a?n.createElement(h,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,m.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function v(e){let{item:t}=e;const a=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,i.xz)(t.docId??void 0);return n.createElement(h,{href:t.href,icon:a,title:t.label,description:t.description??r?.description})}function g(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(v,{item:t});case"category":return n.createElement(b,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function p(e){let{className:t}=e;const a=(0,i.jA)();return n.createElement(E,{items:a.items,className:t})}function E(e){const{items:t,className:a}=e;if(!t)return n.createElement(p,e);const r=(0,i.MN)(t);return n.createElement("section",{className:(0,s.Z)("row",a)},r.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(g,{item:e})))))}var f=a(49),N=a(3120),Z=a(4364),k=a(1310),_=a(2503);const L={generatedIndexPage:"generatedIndexPage_vN6x",list:"list_eTzJ",title:"title_kItE"};function T(e){let{categoryGeneratedIndex:t}=e;return n.createElement(r.d,{title:t.title,description:t.description,keywords:t.keywords,image:(0,l.Z)(t.image)})}function y(e){let{categoryGeneratedIndex:t}=e;const a=(0,i.jA)();return n.createElement("div",{className:L.generatedIndexPage},n.createElement(N.Z,null),n.createElement(k.Z,null),n.createElement(Z.Z,null),n.createElement("header",null,n.createElement(_.Z,{as:"h1",className:L.title},t.title),t.description&&n.createElement("p",null,t.description)),n.createElement("article",{className:"margin-top--lg"},n.createElement(E,{items:a.items,className:L.list})),n.createElement("footer",{className:"margin-top--lg"},n.createElement(f.Z,{previous:t.navigation.previous,next:t.navigation.next})))}function x(e){return n.createElement(n.Fragment,null,n.createElement(T,e),n.createElement(y,e))}},49:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(7462),r=a(7294),i=a(5999),l=a(2244);function s(e){const{previous:t,next:a}=e;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,i.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&r.createElement(l.Z,(0,n.Z)({},t,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&r.createElement(l.Z,(0,n.Z)({},a,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},4364:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(7294),r=a(6010),i=a(5999),l=a(5281),s=a(4477);function c(e){let{className:t}=e;const a=(0,s.E)();return a.badge?n.createElement("span",{className:(0,r.Z)(t,l.k.docs.docVersionBadge,"badge badge--secondary")},n.createElement(i.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},3120:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(7294),r=a(6010),i=a(2263),l=a(9960),s=a(5999),c=a(143),o=a(5281),m=a(373),d=a(4477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function h(e){const t=u[e.versionMetadata.banner];return n.createElement(t,e)}function b(e){let{versionLabel:t,to:a,onClick:r}=e;return n.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(l.Z,{to:a,onClick:r},n.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:l}}=(0,i.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:d}=(0,m.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:v}=(0,c.Jo)(s),g=u??(p=v).docs.find((e=>e.id===p.mainDocId));var p;return n.createElement("div",{className:(0,r.Z)(t,o.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(h,{siteTitle:l,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(b,{versionLabel:v.label,to:g.path,onClick:()=>d(v.name)})))}function g(e){let{className:t}=e;const a=(0,d.E)();return a.banner?n.createElement(v,{className:t,versionMetadata:a}):null}},2503:(e,t,a)=>{a.d(t,{Z:()=>m});var n=a(7462),r=a(7294),i=a(6010),l=a(5999),s=a(6668),c=a(9960);const o={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function m(e){let{as:t,id:a,...m}=e;const{navbar:{hideOnScroll:d}}=(0,s.L)();if("h1"===t||!a)return r.createElement(t,(0,n.Z)({},m,{id:void 0}));const u=(0,l.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof m.children?m.children:a});return r.createElement(t,(0,n.Z)({},m,{className:(0,i.Z)("anchor",d?o.anchorWithHideOnScrollNavbar:o.anchorWithStickyNavbar,m.className),id:a}),m.children,r.createElement(c.Z,{className:"hash-link",to:`#${a}`,"aria-label":u,title:u},"\u200b"))}},2244:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(7294),r=a(6010),i=a(9960);function l(e){const{permalink:t,title:a,subLabel:l,isNext:s}=e;return n.createElement(i.Z,{className:(0,r.Z)("pagination-nav__link",s?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},l&&n.createElement("div",{className:"pagination-nav__sublabel"},l),n.createElement("div",{className:"pagination-nav__label"},a))}}}]); \ No newline at end of file diff --git a/assets/js/14f3d8bb.cc0d3ca7.js b/assets/js/14f3d8bb.cc0d3ca7.js new file mode 100644 index 000000000..e15d2bdde --- /dev/null +++ b/assets/js/14f3d8bb.cc0d3ca7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9090],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function i(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||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="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,i=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(n),m=i,h=p["".concat(c,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(h,a(a({ref:t},u),{},{components:n})):r.createElement(h,a({ref:t},u))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:i,a[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=n(7462),i=(n(7294),n(3905));const o={description:"Guide for Nethermind.Cli project which is useful for managing your node"},a="CLI",l={unversionedId:"nethermind-utilities/cli/README",id:"nethermind-utilities/cli/README",title:"CLI",description:"Guide for Nethermind.Cli project which is useful for managing your node",source:"@site/docs/06-nethermind-utilities/cli/README.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/",permalink:"/docs/nethermind-utilities/cli/",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/README.md",tags:[],version:"current",frontMatter:{description:"Guide for Nethermind.Cli project which is useful for managing your node"},sidebar:"tutorialSidebar",previous:{title:"Nethermind Utilities",permalink:"/docs/category/nethermind-utilities"},next:{title:"admin",permalink:"/docs/nethermind-utilities/cli/admin"}},c={},s=[],u={toc:s},p="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"cli"},"CLI"),(0,i.kt)("p",null,"After launching ",(0,i.kt)("inlineCode",{parentName:"p"},"./Nethermind.Launcher")," you have two options - ",(0,i.kt)("inlineCode",{parentName:"p"},"Ethereum Node")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"CLI"),"."),(0,i.kt)("p",null,"If you launch the Node in one process and then launch the CLI in another process you will see available commands inside\nthe CLI."),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"You have to ensure that the ",(0,i.kt)("inlineCode",{parentName:"p"},"JsonRpc.Enabled")," is set to ",(0,i.kt)("inlineCode",{parentName:"p"},"true")," either by enabling it when Launcher asks about it or by\nmanually editing the relevant config file or by passing ",(0,i.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Enabled true")," parameter after the Launcher command")),(0,i.kt)("p",null,"CLI will display available options ","(","functions and properties",")"," when started."),(0,i.kt)("p",null,"CLI will allow you to query the most basic info about the node quickly."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"You can execute javascript arithmetics"),(0,i.kt)("li",{parentName:"ol"},"You can issue JSON RPC requests to the node"),(0,i.kt)("li",{parentName:"ol"},"You can combine the former two"),(0,i.kt)("li",{parentName:"ol"},"You can create and call functions"),(0,i.kt)("li",{parentName:"ol"},"You can retrieve node objects"),(0,i.kt)("li",{parentName:"ol"},"And work with node object properties"),(0,i.kt)("li",{parentName:"ol"},"You can also load javascript files from disk by calling ",(0,i.kt)("inlineCode",{parentName:"li"},'load("filepath.js")')),(0,i.kt)("li",{parentName:"ol"},"You can navigate to previous commands by using arrow keys"),(0,i.kt)("li",{parentName:"ol"},"You can auto-complete basic command with tab")),(0,i.kt)("p",null,"For more advanced operations with the node use ",(0,i.kt)("a",{parentName:"p",href:"https://nethermind.readthedocs.io/en/latest/web3.html"},"Web3")," or ether.js\nlibs or Truffle, Metamask, etc."),(0,i.kt)("p",null,"Below you will find the available list of CLI operations and you can find more information about each call in JSON RPC\nsection."),(0,i.kt)("p",null,'{% page-ref page="../../ethereum-client/json-rpc/" %}'))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1506.2e7ca40e.js b/assets/js/1506.2e7ca40e.js new file mode 100644 index 000000000..e1476fcff --- /dev/null +++ b/assets/js/1506.2e7ca40e.js @@ -0,0 +1 @@ +(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1506],{3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>u,kt:()=>f});var o=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 o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=o.createContext({}),s=function(e){var t=o.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=s(e.components);return o.createElement(i.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},p=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(n),p=r,f=m["".concat(i,".").concat(p)]||m[p]||d[p]||a;return n?o.createElement(f,c(c({ref:t},u),{},{components:n})):o.createElement(f,c({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,c=new Array(a);c[0]=p;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[m]="string"==typeof e?e:r,c[1]=l;for(var s=2;s{"use strict";n.d(t,{Z:()=>u});var o=n(7462),r=n(7294),a=n(6010),c=n(5999),l=n(6668),i=n(9960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:m}}=(0,l.L)();if("h1"===t||!n)return r.createElement(t,(0,o.Z)({},u,{id:void 0}));const d=(0,c.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return r.createElement(t,(0,o.Z)({},u,{className:(0,a.Z)("anchor",m?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n}),u.children,r.createElement(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d},"\u200b"))}},1506:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ge});var o=n(7294),r=n(3905),a=n(7462),c=n(5742);var l=n(2389),i=n(6010),s=n(2949),u=n(6668);function m(){const{prism:e}=(0,u.L)(),{colorMode:t}=(0,s.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}var d=n(5281),p=n(7594),f=n.n(p);const h=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,y={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function b(e,t){const n=e.map((e=>{const{start:n,end:o}=y[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${o})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function v(e,t){let n=e.replace(/\n$/,"");const{language:o,magicComments:r,metastring:a}=t;if(a&&g.test(a)){const e=a.match(g).groups.range;if(0===r.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=r[0].className,o=f()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(o),code:n}}if(void 0===o)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return b(["js","jsBlock"],t);case"jsx":case"tsx":return b(["js","jsBlock","jsx"],t);case"html":return b(["js","jsBlock","html"],t);case"python":case"py":case"bash":return b(["bash"],t);case"markdown":case"md":return b(["html","jsx","bash"],t);default:return b(Object.keys(y),t)}}(o,r),l=n.split("\n"),i=Object.fromEntries(r.map((e=>[e.className,{start:0,range:""}]))),s=Object.fromEntries(r.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),u=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<l.length;){const e=l[p].match(c);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));s[t]?i[s[t]].range+=`${p},`:u[t]?i[u[t]].start=p:m[t]&&(i[m[t]].range+=`${i[m[t]].start}-${p-1},`),l.splice(p,1)}n=l.join("\n");const d={};return Object.entries(i).forEach((e=>{let[t,{range:n}]=e;f()(n).forEach((e=>{d[e]??=[],d[e].push(t)}))})),{lineClassNames:d,code:n}}const E={codeBlockContainer:"codeBlockContainer_Ckt0"};function k(e){let{as:t,...n}=e;const r=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[o,r]=e;const a=t[o];a&&"string"==typeof r&&(n[a]=r)})),n}(m());return o.createElement(t,(0,a.Z)({},n,{style:r,className:(0,i.Z)(n.className,E.codeBlockContainer,d.k.common.codeBlock)}))}const N={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function C(e){let{children:t,className:n}=e;return o.createElement(k,{as:"pre",tabIndex:0,className:(0,i.Z)(N.codeBlockStandalone,"thin-scrollbar",n)},o.createElement("code",{className:N.codeBlockLines},t))}var w=n(902);const B={attributes:!0,characterData:!0,childList:!0,subtree:!0};function T(e,t){const[n,r]=(0,o.useState)(),a=(0,o.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,o.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=B);const r=(0,w.zX)(t),a=(0,w.Ql)(n);(0,o.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const L={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var j={Prism:n(7410).Z,theme:L};function Z(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(){return O=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},O.apply(this,arguments)}var x=/\r\n|\r|\n/,S=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},_=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function P(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===t.indexOf(o)&&(n[o]=e[o]);return n}var z=function(e){function t(){for(var t=this,n=[],o=arguments.length;o--;)n[o]=arguments[o];e.apply(this,n),Z(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,o=Object.create(null),r=e.styles.reduce((function(e,n){var o=n.languages,r=n.style;return o&&!o.includes(t)||n.types.forEach((function(t){var n=O({},e[t],r);e[t]=n})),e}),o);return r.root=n,r.plain=O({},n,{backgroundColor:null}),r}(e.theme,e.language):void 0;return t.themeDict=n})),Z(this,"getLineProps",(function(e){var n=e.key,o=e.className,r=e.style,a=O({},P(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(a.style=c.plain),void 0!==r&&(a.style=void 0!==a.style?O({},a.style,r):r),void 0!==n&&(a.key=n),o&&(a.className+=" "+o),a})),Z(this,"getStyleForToken",(function(e){var n=e.types,o=e.empty,r=n.length,a=t.getThemeDict(t.props);if(void 0!==a){if(1===r&&"plain"===n[0])return o?{display:"inline-block"}:void 0;if(1===r&&!o)return a[n[0]];var c=o?{display:"inline-block"}:{},l=n.map((function(e){return a[e]}));return Object.assign.apply(Object,[c].concat(l))}})),Z(this,"getTokenProps",(function(e){var n=e.key,o=e.className,r=e.style,a=e.token,c=O({},P(e,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:t.getStyleForToken(a),key:void 0});return void 0!==r&&(c.style=void 0!==c.style?O({},c.style,r):r),void 0!==n&&(c.key=n),o&&(c.className+=" "+o),c})),Z(this,"tokenize",(function(e,t,n,o){var r={code:t,grammar:n,language:o,tokens:[]};e.hooks.run("before-tokenize",r);var a=r.tokens=e.tokenize(r.code,r.grammar,r.language);return e.hooks.run("after-tokenize",r),a}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,o=e.code,r=e.children,a=this.getThemeDict(this.props),c=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],o=[0],r=[e.length],a=0,c=0,l=[],i=[l];c>-1;){for(;(a=o[c]++)<r[c];){var s=void 0,u=t[c],m=n[c][a];if("string"==typeof m?(u=c>0?u:["plain"],s=m):(u=_(u,m.type),m.alias&&(u=_(u,m.alias)),s=m.content),"string"==typeof s){var d=s.split(x),p=d.length;l.push({types:u,content:d[0]});for(var f=1;f<p;f++)S(l),i.push(l=[]),l.push({types:u,content:d[f]})}else c++,t.push(u),n.push(s),o.push(0),r.push(s.length)}c--,t.pop(),n.pop(),o.pop(),r.pop()}return S(l),i}(void 0!==c?this.tokenize(t,o,c,n):[o]),className:"prism-code language-"+n,style:void 0!==a?a.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(o.Component);const A=z,I={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function M(e){let{line:t,classNames:n,showLineNumbers:r,getLineProps:c,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const s=c({line:t,className:(0,i.Z)(n,r&&I.codeLine)}),u=t.map(((e,t)=>o.createElement("span",(0,a.Z)({key:t},l({token:e,key:t})))));return o.createElement("span",s,r?o.createElement(o.Fragment,null,o.createElement("span",{className:I.codeLineNumber}),o.createElement("span",{className:I.codeLineContent},u)):u,o.createElement("br",null))}var D=n(5999);function H(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}))}function W(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}const V={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function R(e){let{code:t,className:n}=e;const[r,a]=(0,o.useState)(!1),c=(0,o.useRef)(void 0),l=(0,o.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const o=document.createElement("textarea"),r=document.activeElement;o.value=e,o.setAttribute("readonly",""),o.style.contain="strict",o.style.position="absolute",o.style.left="-9999px",o.style.fontSize="12pt";const a=document.getSelection(),c=a.rangeCount>0&&a.getRangeAt(0);n.append(o),o.select(),o.selectionStart=0,o.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}o.remove(),c&&(a.removeAllRanges(),a.addRange(c)),r&&r.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,o.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),o.createElement("button",{type:"button","aria-label":r?(0,D.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,D.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,D.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,i.Z)("clean-btn",n,V.copyButton,r&&V.copyButtonCopied),onClick:l},o.createElement("span",{className:V.copyButtonIcons,"aria-hidden":"true"},o.createElement(H,{className:V.copyButtonIcon}),o.createElement(W,{className:V.copyButtonSuccessIcon})))}function $(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"}))}const F={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function q(e){let{className:t,onClick:n,isEnabled:r}=e;const a=(0,D.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return o.createElement("button",{type:"button",onClick:n,className:(0,i.Z)("clean-btn",t,r&&F.wordWrapButtonEnabled),"aria-label":a,title:a},o.createElement($,{className:F.wordWrapButtonIcon,"aria-hidden":"true"}))}function G(e){let{children:t,className:n="",metastring:r,title:c,showLineNumbers:l,language:s}=e;const{prism:{defaultLanguage:d,magicComments:p}}=(0,u.L)(),f=s??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??d,g=m(),y=function(){const[e,t]=(0,o.useState)(!1),[n,r]=(0,o.useState)(!1),a=(0,o.useRef)(null),c=(0,o.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),l=(0,o.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return T(a,l),(0,o.useEffect)((()=>{l()}),[e,l]),(0,o.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),b=function(e){return e?.match(h)?.groups.title??""}(r)||c,{lineClassNames:E,code:C}=v(t,{metastring:r,language:f,magicComments:p}),w=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(r);return o.createElement(k,{as:"div",className:(0,i.Z)(n,f&&!n.includes(`language-${f}`)&&`language-${f}`)},b&&o.createElement("div",{className:N.codeBlockTitle},b),o.createElement("div",{className:N.codeBlockContent},o.createElement(A,(0,a.Z)({},j,{theme:g,code:C,language:f??"text"}),(e=>{let{className:t,tokens:n,getLineProps:r,getTokenProps:a}=e;return o.createElement("pre",{tabIndex:0,ref:y.codeBlockRef,className:(0,i.Z)(t,N.codeBlock,"thin-scrollbar")},o.createElement("code",{className:(0,i.Z)(N.codeBlockLines,w&&N.codeBlockLinesWithNumbering)},n.map(((e,t)=>o.createElement(M,{key:t,line:e,getLineProps:r,getTokenProps:a,classNames:E[t],showLineNumbers:w})))))})),o.createElement("div",{className:N.buttonGroup},(y.isEnabled||y.isCodeScrollable)&&o.createElement(q,{className:N.codeButton,onClick:()=>y.toggle(),isEnabled:y.isEnabled}),o.createElement(R,{className:N.codeButton,code:C}))))}function U(e){let{children:t,...n}=e;const r=(0,l.Z)(),c=function(e){return o.Children.toArray(e).some((e=>(0,o.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),i="string"==typeof c?G:C;return o.createElement(i,(0,a.Z)({key:String(r)},n),c)}var Y=n(9960);var Q=n(6043);const X={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function J(e){return!!e&&("SUMMARY"===e.tagName||J(e.parentElement))}function K(e,t){return!!e&&(e===t||K(e.parentElement,t))}function ee(e){let{summary:t,children:n,...r}=e;const c=(0,l.Z)(),s=(0,o.useRef)(null),{collapsed:u,setCollapsed:m}=(0,Q.u)({initialState:!r.open}),[d,p]=(0,o.useState)(r.open),f=o.isValidElement(t)?t:o.createElement("summary",null,t??"Details");return o.createElement("details",(0,a.Z)({},r,{ref:s,open:d,"data-collapsed":u,className:(0,i.Z)(X.details,c&&X.isBrowser,r.className),onMouseDown:e=>{J(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;J(t)&&K(t,s.current)&&(e.preventDefault(),u?(m(!1),p(!0)):m(!0))}}),f,o.createElement(Q.z,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{m(e),p(!e)}},o.createElement("div",{className:X.collapsibleContent},n)))}const te={details:"details_b_Ee"},ne="alert alert--info";function oe(e){let{...t}=e;return o.createElement(ee,(0,a.Z)({},t,{className:(0,i.Z)(ne,te.details,t.className)}))}var re=n(2503);function ae(e){return o.createElement(re.Z,e)}const ce={containsTaskList:"containsTaskList_mC6p"};const le={img:"img_ev3q"};const ie="admonition_LlT9",se="admonitionHeading_tbUL",ue="admonitionIcon_kALy",me="admonitionContent_S0QG";const de={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(D.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(D.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(D.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(D.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(D.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},pe={secondary:"note",important:"info",success:"tip",warning:"danger"};function fe(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=o.Children.toArray(e),n=t.find((e=>o.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:r}}(e.children);return{...e,title:e.title??t,children:n}}const he={head:function(e){const t=o.Children.map(e.children,(e=>o.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...r}=e.props;return o.createElement(e.props.originalType,r)}return e}(e):e));return o.createElement(c.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return o.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,o.isValidElement)(e)&&t.includes(e.props?.mdxType)))?o.createElement("code",e):o.createElement(U,e)},a:function(e){return o.createElement(Y.Z,e)},pre:function(e){return o.createElement(U,(0,o.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=o.Children.toArray(e.children),n=t.find((e=>o.isValidElement(e)&&"summary"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return o.createElement(oe,(0,a.Z)({},e,{summary:n}),r)},ul:function(e){return o.createElement("ul",(0,a.Z)({},e,{className:(t=e.className,(0,i.Z)(t,t?.includes("contains-task-list")&&ce.containsTaskList))}));var t},img:function(e){return o.createElement("img",(0,a.Z)({loading:"lazy"},e,{className:(t=e.className,(0,i.Z)(t,le.img))}));var t},h1:e=>o.createElement(ae,(0,a.Z)({as:"h1"},e)),h2:e=>o.createElement(ae,(0,a.Z)({as:"h2"},e)),h3:e=>o.createElement(ae,(0,a.Z)({as:"h3"},e)),h4:e=>o.createElement(ae,(0,a.Z)({as:"h4"},e)),h5:e=>o.createElement(ae,(0,a.Z)({as:"h5"},e)),h6:e=>o.createElement(ae,(0,a.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:r,icon:a}=fe(e),c=function(e){const t=pe[e]??e,n=de[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),de.info)}(n),l=r??c.label,{iconComponent:s}=c,u=a??o.createElement(s,null);return o.createElement("div",{className:(0,i.Z)(d.k.common.admonition,d.k.common.admonitionType(e.type),"alert",`alert--${c.infimaClassName}`,ie)},o.createElement("div",{className:se},o.createElement("span",{className:ue},u),l),o.createElement("div",{className:me},t))},mermaid:n(1875).Z};function ge(e){let{children:t}=e;return o.createElement(r.Zo,{components:he},t)}},7594:(e,t)=>{function n(e){let t,n=[];for(let o of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(o))n.push(parseInt(o,10));else if(t=o.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,o,r,a]=t;if(o&&a){o=parseInt(o),a=parseInt(a);const e=o<a?1:-1;"-"!==r&&".."!==r&&"\u2025"!==r||(a+=e);for(let t=o;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/16bcd8b6.d6da0510.js b/assets/js/16bcd8b6.d6da0510.js new file mode 100644 index 000000000..6da6d3abf --- /dev/null +++ b/assets/js/16bcd8b6.d6da0510.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2674],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});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 o(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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=s(n),m=r,g=c["".concat(p,".").concat(m)]||c[m]||u[m]||o;return n?a.createElement(g,i(i({ref:t},d),{},{components:n})):a.createElement(g,i({ref:t},d))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var s=2;s<o;s++)i[s]=n[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},1054:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var a=n(7462),r=(n(7294),n(3905));const o={description:"A list of properties to adjust Nethermind Node 04-configuration"},i="Configuration",l={unversionedId:"fundamentals/configuration/README",id:"fundamentals/configuration/README",title:"Configuration",description:"A list of properties to adjust Nethermind Node 04-configuration",source:"@site/docs/02-fundamentals/04-configuration/README.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/",permalink:"/docs/fundamentals/configuration/",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/README.md",tags:[],version:"current",frontMatter:{description:"A list of properties to adjust Nethermind Node 04-configuration"},sidebar:"tutorialSidebar",previous:{title:"Sync modes",permalink:"/docs/fundamentals/sync-modes"},next:{title:"AccountAbstraction",permalink:"/docs/fundamentals/configuration/accountabstraction"}},p={},s=[{value:"Config file",id:"config-file",level:2},{value:"Environment variables",id:"environment-variables",level:2},{value:"Command line options",id:"command-line-options",level:2},{value:"datadir",id:"datadir",level:3},{value:"baseDbPath",id:"basedbpath",level:3},{value:"config",id:"config",level:3},{value:"log",id:"log",level:3},{value:"configsDirectory",id:"configsdirectory",level:3},{value:"loggerConfigSource",id:"loggerconfigsource",level:3}],d={toc:s},c="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"configuration"},"Configuration"),(0,r.kt)("p",null,"There are three ways of configuring Nethermind node. They are presented below in the reversed order of priorities ","(","if\nyou set the same property in the config file, in the environment variable and in the command line then the command line\nvalue will be used",")","."),(0,r.kt)("h2",{id:"config-file"},"Config file"),(0,r.kt)("p",null,"Change the configuration properties in the ",(0,r.kt)("inlineCode",{parentName:"p"},".cfg")," file of the network configuration you wish to run. Each ",(0,r.kt)("inlineCode",{parentName:"p"},".cfg")," file\nwith the default setup is attached to Nethermind packages and can be found in ",(0,r.kt)("inlineCode",{parentName:"p"},"configs")," folder."),(0,r.kt)("h2",{id:"environment-variables"},"Environment variables"),(0,r.kt)("p",null,"The last way is to set the values in the environment variables,\ne.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"set NETHERMIND_INITCONFIG_PROCESSINGENABLED = false")),(0,r.kt)("h2",{id:"command-line-options"},"Command line options"),(0,r.kt)("p",null,"Another way is to setup each configuration property by passing flags to either ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner"),"\nor ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Launcher"),". You can see the list of all config option by running ",(0,r.kt)("inlineCode",{parentName:"p"},"./Nethermind.Runner --help")," For example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-text"},"./Nethermind.Runner --config ropsten --JsonRpc.Enabled true --Init.ProcessingEnabled false\n")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"When passing a flag, each property needs to be prefixed with its respective ",(0,r.kt)("a",{parentName:"p",href:"./"},(0,r.kt)("strong",{parentName:"a"},"Module")),", followed by the ",(0,r.kt)("strong",{parentName:"p"},"property\nname")," and its ",(0,r.kt)("strong",{parentName:"p"},"value")," e.g ",(0,r.kt)("inlineCode",{parentName:"p"},"--Init.IsMining true"))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Use ",(0,r.kt)("inlineCode",{parentName:"p"},"/")," as the path separator so the configs can be shared between all platforms supported ","(","Linux, Windows, MacOS",")",".")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"--config"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"--baseDbPath"),",",(0,r.kt)("inlineCode",{parentName:"p"},"--datadir, --loggerConfigSource, --log")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"--configsDirectory"),"options are available from\nthe command line to select config file, base DB directory prefix and log level respectively.")),(0,r.kt)("h3",{id:"datadir"},"datadir"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Usage:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"--datadir")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"-dd")),(0,r.kt)("p",null,"You may want to use this option to store all data that the node produces in a custom directory.\nThe ",(0,r.kt)("inlineCode",{parentName:"p"},"--datadir")," ","(",(0,r.kt)("inlineCode",{parentName:"p"},"-dd"),")"," changes paths of ",(0,r.kt)("inlineCode",{parentName:"p"},"database, logs, keystore"),"to the target directory. You can specify either *\n*relative",(0,r.kt)("strong",{parentName:"p"}," or "),"absolute** paths, e.g."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--datadir data\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--datadir /home/user/nethermind/data\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--datadir ./data\n")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Absolute paths of ",(0,r.kt)("inlineCode",{parentName:"p"},"Init.BaseDbPath"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"Init.LogDirectory")," or",(0,r.kt)("inlineCode",{parentName:"p"},"KeyStore.KeyStoreDirectory"),"in config file will not be\noverwritten by ",(0,r.kt)("inlineCode",{parentName:"p"},"--datadir"))),(0,r.kt)("h3",{id:"basedbpath"},"baseDbPath"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Usage:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"--baseDbPath")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"-d")),(0,r.kt)("p",null,"Configures the path of the Nethermind's database folder. Is equal to setting ",(0,r.kt)("inlineCode",{parentName:"p"},"--Init.BaseDbPath")," parameter."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--baseDbPath /home/user/my_node/db\n")),(0,r.kt)("h3",{id:"config"},"config"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Usage:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"--config")," *",(0,r.kt)("strong",{parentName:"p"},"*or **"),(0,r.kt)("inlineCode",{parentName:"p"},"-c")),(0,r.kt)("p",null,"Determines the configuration file of the network on which Nethermind will be running."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--config xdai\n")),(0,r.kt)("p",null,"More on that ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/networks"},"here"),"."),(0,r.kt)("h3",{id:"log"},"log"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Usage:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"--log")," *",(0,r.kt)("strong",{parentName:"p"},"*or **"),(0,r.kt)("inlineCode",{parentName:"p"},"-l")),(0,r.kt)("p",null,"Changes the logging level."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--log DEBUG\n")),(0,r.kt)("p",null,"More on that ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/logs/logging-configuration"},"here")),(0,r.kt)("h3",{id:"configsdirectory"},"configsDirectory"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Usage:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"--configsDirectory")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"-cd")),(0,r.kt)("p",null,"Changes the source directory of your configuration files."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--configsDirectory /home/user/my_configs\n")),(0,r.kt)("h3",{id:"loggerconfigsource"},"loggerConfigSource"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Usage:")," ",(0,r.kt)("inlineCode",{parentName:"p"},"--loggerConfigSource")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"-lcs")),(0,r.kt)("p",null,"Changes the path of the ",(0,r.kt)("inlineCode",{parentName:"p"},"NLog.config")," file."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--loggerConfigSource /home/user/NLog.config\n")),(0,r.kt)("p",null,"More on that ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nlog/nlog/wiki"},"here"),":"))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/17896441.8bb4ba6a.js b/assets/js/17896441.8bb4ba6a.js new file mode 100644 index 000000000..ab41e42d1 --- /dev/null +++ b/assets/js/17896441.8bb4ba6a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7918],{1310:(e,t,n)=>{n.d(t,{Z:()=>E});var a=n(7462),l=n(7294),r=n(6010),o=n(5281),s=n(3438),c=n(8596),i=n(9960),d=n(5999),m=n(4996);function u(e){return l.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),l.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const v={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function b(){const e=(0,m.Z)("/");return l.createElement("li",{className:"breadcrumbs__item"},l.createElement(i.Z,{"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},l.createElement(u,{className:v.breadcrumbHomeIcon})))}const p={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function h(e){let{children:t,href:n,isLast:a}=e;const r="breadcrumbs__link";return a?l.createElement("span",{className:r,itemProp:"name"},t):n?l.createElement(i.Z,{className:r,href:n,itemProp:"item"},l.createElement("span",{itemProp:"name"},t)):l.createElement("span",{className:r},t)}function g(e){let{children:t,active:n,index:o,addMicrodata:s}=e;return l.createElement("li",(0,a.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,r.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,l.createElement("meta",{itemProp:"position",content:String(o+1)}))}function E(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?l.createElement("nav",{className:(0,r.Z)(o.k.docs.docBreadcrumbs,p.breadcrumbsContainer),"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},l.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&l.createElement(b,null),e.map(((t,n)=>{const a=n===e.length-1;return l.createElement(g,{key:n,active:a,index:n,addMicrodata:!!t.href},l.createElement(h,{href:t.href,isLast:a},t.label))})))):null}},5154:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});var a=n(7294),l=n(1944),r=n(902);const o=a.createContext(null);function s(e){let{children:t,content:n}=e;const l=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(o.Provider,{value:l},t)}function c(){const e=(0,a.useContext)(o);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=c();return a.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var d=n(6010),m=n(7524),u=n(49);function v(){const{metadata:e}=c();return a.createElement(u.Z,{previous:e.previous,next:e.next})}var b=n(3120),p=n(4364),h=n(5281),g=n(5999);function E(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(g.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function f(e){let{lastUpdatedBy:t}=e;return a.createElement(g.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function L(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:l}=e;return a.createElement("span",{className:h.k.common.lastUpdated},a.createElement(g.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(E,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:l?a.createElement(f,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var N=n(4881),Z=n(1526);const C={lastUpdated:"lastUpdated_vwxv"};function _(e){return a.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(Z.Z,e)))}function k(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(N.Z,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",C.lastUpdated)},(n||l)&&a.createElement(L,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function x(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:o}=e,s=o.length>0,i=!!(t||n||r);return s||i?a.createElement("footer",{className:(0,d.Z)(h.k.docs.docFooter,"docusaurus-mt-lg")},s&&a.createElement(_,{tags:o}),i&&a.createElement(k,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var T=n(6043),H=n(3743),U=n(7462);const y={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function w(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,U.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",y.tocCollapsibleButton,!t&&y.tocCollapsibleButtonExpanded,n.className)}),a.createElement(g.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const A={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function M(e){let{toc:t,className:n,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:o,toggleCollapsed:s}=(0,T.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(A.tocCollapsible,!o&&A.tocCollapsibleExpanded,n)},a.createElement(w,{collapsed:o,onClick:s}),a.createElement(T.z,{lazy:!0,className:A.tocCollapsibleContent,collapsed:o},a.createElement(H.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const I={tocMobile:"tocMobile_ITEo"};function B(){const{toc:e,frontMatter:t}=c();return a.createElement(M,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(h.k.docs.docTocMobile,I.tocMobile)})}var O=n(9407);function V(){const{toc:e,frontMatter:t}=c();return a.createElement(O.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:h.k.docs.docTocDesktop})}var S=n(2503),P=n(1506);function R(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(h.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(S.Z,{as:"h1"},n)),a.createElement(P.Z,null,t))}var D=n(1310);const F={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function z(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=c(),n=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?a.createElement(B,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(V,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&F.docItemCol)},a.createElement(b.Z,null),a.createElement("div",{className:F.docItemContainer},a.createElement("article",null,a.createElement(D.Z,null),a.createElement(p.Z,null),n.mobile,a.createElement(R,null,t),a.createElement(x,null)),a.createElement(v,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function j(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(s,{content:e.content},a.createElement(l.FG,{className:t},a.createElement(i,null),a.createElement(z,null,a.createElement(n,null))))}},49:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7462),l=n(7294),r=n(5999),o=n(2244);function s(e){const{previous:t,next:n}=e;return l.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&l.createElement(o.Z,(0,a.Z)({},t,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&l.createElement(o.Z,(0,a.Z)({},n,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},4364:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(7294),l=n(6010),r=n(5999),o=n(5281),s=n(4477);function c(e){let{className:t}=e;const n=(0,s.E)();return n.badge?a.createElement("span",{className:(0,l.Z)(t,o.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(r.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}},3120:(e,t,n)=>{n.d(t,{Z:()=>h});var a=n(7294),l=n(6010),r=n(2263),o=n(9960),s=n(5999),c=n(143),i=n(5281),d=n(373),m=n(4477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function v(e){const t=u[e.versionMetadata.banner];return a.createElement(t,e)}function b(e){let{versionLabel:t,to:n,onClick:l}=e;return a.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(o.Z,{to:n,onClick:l},a.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function p(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,r.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:m}=(0,d.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:p}=(0,c.Jo)(s),h=u??(g=p).docs.find((e=>e.id===g.mainDocId));var g;return a.createElement("div",{className:(0,l.Z)(t,i.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(v,{siteTitle:o,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(b,{versionLabel:p.label,to:h.path,onClick:()=>m(p.name)})))}function h(e){let{className:t}=e;const n=(0,m.E)();return n.banner?a.createElement(p,{className:t,versionMetadata:n}):null}},4881:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(7294),l=n(5999),r=n(5281),o=n(7462),s=n(6010);const c={iconEdit:"iconEdit_Z9Sw"};function i(e){let{className:t,...n}=e;return a.createElement("svg",(0,o.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(c.iconEdit,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function d(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},a.createElement(i,null),a.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},2244:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(7294),l=n(6010),r=n(9960);function o(e){const{permalink:t,title:n,subLabel:o,isNext:s}=e;return a.createElement(r.Z,{className:(0,l.Z)("pagination-nav__link",s?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},o&&a.createElement("div",{className:"pagination-nav__sublabel"},o),a.createElement("div",{className:"pagination-nav__label"},n))}},9407:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(7462),l=n(7294),r=n(6010),o=n(3743);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},c="table-of-contents__link toc-highlight",i="table-of-contents__link--active";function d(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(s.tableOfContents,"thin-scrollbar",t)},l.createElement(o.Z,(0,a.Z)({},n,{linkClassName:c,linkActiveClassName:i})))}},3743:(e,t,n)=>{n.d(t,{Z:()=>b});var a=n(7462),l=n(7294),r=n(6668);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function s(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=s({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(c(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function d(){const e=(0,l.useRef)(0),{navbar:{hideOnScroll:t}}=(0,r.L)();return(0,l.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,l.useRef)(void 0),n=d();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:o}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:o}),c=i(s,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===d)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const v=l.memo(u);function b(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:i,minHeadingLevel:d,maxHeadingLevel:u,...b}=e;const p=(0,r.L)(),h=d??p.tableOfContents.minHeadingLevel,g=u??p.tableOfContents.maxHeadingLevel,E=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>s({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:h,maxHeadingLevel:g});return m((0,l.useMemo)((()=>{if(c&&i)return{linkClassName:c,linkActiveClassName:i,minHeadingLevel:h,maxHeadingLevel:g}}),[c,i,h,g])),l.createElement(v,(0,a.Z)({toc:E,className:n,linkClassName:c},b))}},3008:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(7294),l=n(6010),r=n(9960);const o={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function s(e){let{permalink:t,label:n,count:s}=e;return a.createElement(r.Z,{href:t,className:(0,l.Z)(o.tag,s?o.tagWithCount:o.tagRegular)},n,s&&a.createElement("span",null,s))}},1526:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(7294),l=n(6010),r=n(5999),o=n(3008);const s={tags:"tags_jXut",tag:"tag_QGVx"};function c(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,l.Z)(s.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:s.tag},a.createElement(o.Z,{label:t,permalink:n}))}))))}}}]); \ No newline at end of file diff --git a/assets/js/1be78505.538c7c13.js b/assets/js/1be78505.538c7c13.js new file mode 100644 index 000000000..13c30af7c --- /dev/null +++ b/assets/js/1be78505.538c7c13.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9514,4972],{9963:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ge});var a=n(7294),l=n(6010),o=n(1944),r=n(5281),c=n(3320),i=n(3438),s=n(4477),d=n(1116),m=n(7961),u=n(5999),b=n(2466),p=n(5936);const h={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=n?.scrollY;r&&(o.current?o.current=!1:a>=r?(c(),l(!1)):a<t?l(!1):a+window.innerHeight<document.documentElement.scrollHeight&&l(!0))})),(0,p.S)((e=>{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.Z)("clean-btn",r.k.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var f=n(1442),g=n(6550),k=n(7524),_=n(6668),v=n(1327),C=n(7462);function S(e){return a.createElement("svg",(0,C.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const I={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function N(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.Z)("button button--secondary button--outline",I.collapseSidebarButton),onClick:t},a.createElement(S,{className:I.collapseSidebarButtonIcon}))}var T=n(9689),Z=n(902);const x=Symbol("EmptyContext"),B=a.createContext(x);function y(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(B.Provider,{value:o},t)}var w=n(6043),L=n(8596),A=n(9960),M=n(2389);function F(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function H(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,_.L)(),f=function(e){const t=(0,M.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),g=(0,i._F)(t,o),k=(0,L.Mg)(h,o),{collapsed:v,setCollapsed:S}=(0,w.u)({initialState:()=>!!b&&(!g&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(B);if(e===x)throw new Z.i6("DocSidebarItemsExpandedStateProvider");return e}(),T=function(e){void 0===e&&(e=!v),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,Z.D9)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:g,collapsed:v,updateCollapsed:T}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":v},p)},a.createElement("div",{className:(0,l.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":k})},a.createElement(A.Z,(0,C.Z)({className:(0,l.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":g}),onClick:b?e=>{n?.(t),h?T(!1):(e.preventDefault(),T())}:()=>{n?.(t)},"aria-current":k?"page":void 0,"aria-expanded":b?!v:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(F,{categoryLabel:u,onClick:e=>{e.preventDefault(),T()}})),a.createElement(w.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:v},a.createElement(j,{items:m,tabIndex:v?-1:0,onItemClick:n,activePath:o,level:c+1})))}var P=n(3919),W=n(9471);const D={menuExternalLink:"menuExternalLink_NmtK"};function R(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,o),E=(0,P.Z)(m);return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(A.Z,(0,C.Z)({className:(0,l.Z)("menu__link",!E&&D.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(W.Z,null)))}const V={menuHtmlItem:"menuHtmlItem_M9Kj"};function z(e){let{item:t,level:n,index:o}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[V.menuHtmlItem,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:c}})}function U(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(H,(0,C.Z)({item:t},n));case"html":return a.createElement(z,(0,C.Z)({item:t},n));default:return a.createElement(R,(0,C.Z)({item:t},n))}}function K(e){let{items:t,...n}=e;return a.createElement(y,null,t.map(((e,t)=>a.createElement(U,(0,C.Z)({key:t,item:e,index:t},n)))))}const j=(0,a.memo)(K),G={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function Y(e){let{path:t,sidebar:n,className:o}=e;const c=function(){const{isActive:e}=(0,T.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,l.Z)("menu thin-scrollbar",G.menu,c&&G.menuWithAnnouncementBar,o)},a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(j,{items:n,activePath:t,level:1})))}const q="sidebar_njMd",O="sidebarWithHideableNavbar_wUlq",X="sidebarHidden_VK0M",J="sidebarLogo_isFc";function Q(e){let{path:t,sidebar:n,onCollapse:o,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,_.L)();return a.createElement("div",{className:(0,l.Z)(q,c&&O,r&&X)},c&&a.createElement(v.Z,{tabIndex:-1,className:J}),a.createElement(Y,{path:t,sidebar:n}),i&&a.createElement(N,{onClick:o}))}const $=a.memo(Q);var ee=n(3102),te=n(3163);const ne=e=>{let{sidebar:t,path:n}=e;const o=(0,te.e)();return a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(j,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function ae(e){return a.createElement(ee.Zo,{component:ne,props:e})}const le=a.memo(ae);function oe(e){const t=(0,k.i)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement($,e),l&&a.createElement(le,e))}const re={expandButton:"expandButton_m80_",expandButtonIcon:"expandButtonIcon_BlDH"};function ce(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:re.expandButton,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(S,{className:re.expandButtonIcon}))}const ie={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function se(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function de(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:c}=(0,g.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),!i&&(0,f.n)()&&s(!0),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.Z)(r.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&s(!0)}},a.createElement(se,null,a.createElement("div",{className:(0,l.Z)(ie.sidebarViewport,i&&ie.sidebarViewportHidden)},a.createElement(oe,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(ce,{toggleSidebar:d}))))}const me={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.V)();return a.createElement("main",{className:(0,l.Z)(me.docMainContainer,(t||!o)&&me.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.Z)("container padding-top--md padding-bottom--lg",me.docItemWrapper,t&&me.docItemWrapperEnhanced)},n))}const be={docPage:"docPage__5DB",docsWrapper:"docsWrapper_BCFX"};function pe(e){let{children:t}=e;const n=(0,d.V)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:be.docsWrapper},a.createElement(E,null),a.createElement("div",{className:be.docPage},n&&a.createElement(de,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(ue,{hiddenSidebarContainer:l},t)))}var he=n(4972),Ee=n(197);function fe(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(Ee.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(o.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function ge(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(he.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(fe,e),a.createElement(o.FG,{className:(0,l.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(pe,null,c)))))}},4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7294),l=n(5999),o=n(1944),r=n(7961);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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/1c091541.6b658ffb.js b/assets/js/1c091541.6b658ffb.js new file mode 100644 index 000000000..b8c2cadd2 --- /dev/null +++ b/assets/js/1c091541.6b658ffb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8271],{4469:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.85cb589c.js b/assets/js/1f391b9e.85cb589c.js new file mode 100644 index 000000000..9af2276c4 --- /dev/null +++ b/assets/js/1f391b9e.85cb589c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3085],{4247:(e,n,t)=>{t.r(n),t.d(n,{default:()=>d});var a=t(7294),l=t(6010),r=t(1944),c=t(5281),i=t(7961),o=t(1506),s=t(9407);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};function d(e){const{content:n}=e,{metadata:{title:t,description:d,frontMatter:u}}=n,{wrapperClassName:f,hide_table_of_contents:v}=u;return a.createElement(r.FG,{className:(0,l.Z)(f??c.k.wrapper.mdxPages,c.k.page.mdxPage)},a.createElement(r.d,{title:t,description:d}),a.createElement(i.Z,null,a.createElement("main",{className:"container container--fluid margin-vert--lg"},a.createElement("div",{className:(0,l.Z)("row",m.mdxPageWrapper)},a.createElement("div",{className:(0,l.Z)("col",!v&&"col--8")},a.createElement("article",null,a.createElement(o.Z,null,a.createElement(n,null)))),!v&&n.toc.length>0&&a.createElement("div",{className:"col col--2"},a.createElement(s.Z,{toc:n.toc,minHeadingLevel:u.toc_min_heading_level,maxHeadingLevel:u.toc_max_heading_level}))))))}},9407:(e,n,t)=>{t.d(n,{Z:()=>m});var a=t(7462),l=t(7294),r=t(6010),c=t(3743);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},o="table-of-contents__link toc-highlight",s="table-of-contents__link--active";function m(e){let{className:n,...t}=e;return l.createElement("div",{className:(0,r.Z)(i.tableOfContents,"thin-scrollbar",n)},l.createElement(c.Z,(0,a.Z)({},t,{linkClassName:o,linkActiveClassName:s})))}},3743:(e,n,t)=>{t.d(n,{Z:()=>v});var a=t(7462),l=t(7294),r=t(6668);function c(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const a=t.slice(2,e.level);e.parentIndex=Math.max(...a),t[e.level]=n}));const a=[];return n.forEach((e=>{const{parentIndex:t,...l}=e;t>=0?n[t].children.push(l):a.push(l)})),a}function i(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return n.flatMap((e=>{const n=i({toc:e.children,minHeadingLevel:t,maxHeadingLevel:a});return function(e){return e.level>=t&&e.level<=a}(e)?[{...e,children:n}]:n}))}function o(e){const n=e.getBoundingClientRect();return n.top===n.bottom?o(e.parentNode):n}function s(e,n){let{anchorTopOffset:t}=n;const a=e.find((e=>o(e).top>=t));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(o(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function m(){const e=(0,l.useRef)(0),{navbar:{hideOnScroll:n}}=(0,r.L)();return(0,l.useEffect)((()=>{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,l.useRef)(void 0),t=m();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:c}=e;function i(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),i=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const a=[];for(let l=n;l<=t;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:c}),o=s(i,{anchorTopOffset:t.current}),m=e.find((e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(l),e.classList.add(l),n.current=e):e.classList.remove(l)}(e,e===m)}))}return document.addEventListener("scroll",i),document.addEventListener("resize",i),i(),()=>{document.removeEventListener("scroll",i),document.removeEventListener("resize",i)}}),[e,t])}function u(e){let{toc:n,className:t,linkClassName:a,isChild:r}=e;return n.length?l.createElement("ul",{className:r?void 0:t},n.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:t,linkClassName:a}))))):null}const f=l.memo(u);function v(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:m,maxHeadingLevel:u,...v}=e;const g=(0,r.L)(),h=m??g.tableOfContents.minHeadingLevel,L=u??g.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>i({toc:c(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:h,maxHeadingLevel:L});return d((0,l.useMemo)((()=>{if(o&&s)return{linkClassName:o,linkActiveClassName:s,minHeadingLevel:h,maxHeadingLevel:L}}),[o,s,h,L])),l.createElement(f,(0,a.Z)({toc:p,className:t,linkClassName:o},v))}}}]); \ No newline at end of file diff --git a/assets/js/2027d067.5fa7e256.js b/assets/js/2027d067.5fa7e256.js new file mode 100644 index 000000000..c0d9d669d --- /dev/null +++ b/assets/js/2027d067.5fa7e256.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9555],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function d(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),p=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):d(d({},e),t)),a},c=function(t){var e=p(t.components);return n.createElement(o.Provider,{value:e},t.children)},m="mdxType",f={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},s=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,o=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),m=p(a),s=r,b=m["".concat(o,".").concat(s)]||m[s]||f[s]||l;return a?n.createElement(b,d(d({ref:e},c),{},{components:a})):n.createElement(b,d({ref:e},c))}));function b(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,d=new Array(l);d[0]=s;var i={};for(var o in e)hasOwnProperty.call(e,o)&&(i[o]=e[o]);i.originalType=t,i[m]="string"==typeof t?t:r,d[1]=i;for(var p=2;p<l;p++)d[p]=a[p];return n.createElement.apply(null,d)}return n.createElement.apply(null,a)}s.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>d});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function d(t){let{children:e,hidden:a,className:d}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,d),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>C});var n=a(7462),r=a(7294),l=a(6010),d=a(2466),i=a(6550),o=a(1980),p=a(7392),c=a(12);function m(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function f(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??m(a);return function(t){const e=(0,p.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function s(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function b(t){let{queryString:e=!1,groupId:a}=t;const n=(0,i.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,o._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function k(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=f(t),[d,i]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!s({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[o,p]=b({queryString:a,groupId:n}),[m,k]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,c.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),u=(()=>{const t=o??m;return s({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{u&&i(u)}),[u]);return{selectedValue:d,selectValue:(0,r.useCallback)((t=>{if(!s({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);i(t),p(t),k(t)}),[p,k,l]),tabValues:l}}var u=a(2389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(t){let{className:e,block:a,selectedValue:i,selectValue:o,tabValues:p}=t;const c=[],{blockElementScrollPositionUntilNextRender:m}=(0,d.o5)(),f=t=>{const e=t.currentTarget,a=c.indexOf(e),n=p[a].value;n!==i&&(m(e),o(n))},s=t=>{let e=null;switch(t.key){case"Enter":f(t);break;case"ArrowRight":{const a=c.indexOf(t.currentTarget)+1;e=c[a]??c[0];break}case"ArrowLeft":{const a=c.indexOf(t.currentTarget)-1;e=c[a]??c[c.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},p.map((t=>{let{value:e,label:a,attributes:d}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===e?0:-1,"aria-selected":i===e,key:e,ref:t=>c.push(t),onKeyDown:s,onClick:f},d,{className:(0,l.Z)("tabs__item",N.tabItem,d?.className,{"tabs__item--active":i===e})}),a??e)})))}function y(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function h(t){const e=k(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",N.tabList)},r.createElement(g,(0,n.Z)({},t,e)),r.createElement(y,(0,n.Z)({},t,e)))}function C(t){const e=(0,u.Z)();return r.createElement(h,(0,n.Z)({key:String(e)},t))}},9702:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>b,frontMatter:()=>i,metadata:()=>p,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),d=a(5162);const i={},o="proof",p={unversionedId:"interacting-with-nethermind/json-rpc-api/proof",id:"interacting-with-nethermind/json-rpc-api/proof",title:"proof",description:"proof_getTransactionByHash",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/proof.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/proof",permalink:"/docs/interacting-with-nethermind/json-rpc-api/proof",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/proof.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/docs/interacting-with-nethermind/json-rpc-api/personal"},next:{title:"rpc",permalink:"/docs/interacting-with-nethermind/json-rpc-api/rpc"}},c={},m=[{value:"proof_getTransactionByHash",id:"proof_gettransactionbyhash",level:2},{value:"proof_getTransactionReceipt",id:"proof_gettransactionreceipt",level:2}],f={toc:m},s="wrapper";function b(t){let{components:e,...a}=t;return(0,r.kt)(s,(0,n.Z)({},f,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"proof"},"proof"),(0,r.kt)("h2",{id:"proof_gettransactionbyhash"},"proof_getTransactionByHash"),(0,r.kt)("p",null,"This function returns the same result as ",(0,r.kt)("inlineCode",{parentName:"p"},"eth_getTransactionReceipt")," and also a tx proof, receipt proof and serialized block headers. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"proof_getTransactionByHash","params":[txHash, includeHeader]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"includeHeader"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionWithProof object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"proof_getTransactionByHash","params":[txHash, includeHeader],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": "transaction":{"hash":"0xb62594c08de66c683fbffe44792a1ccc0f9b80e43071048ed03c18a71fd3c19a","nonce":"0x630","blockHash":"0x42d72739c2b2659916d7b42a49661fdec317e780af1395c2c15aa89b4c42e220","blockNumber":"0x88f194","transactionIndex":"0x24","from":"0x78ca86e8133ef9368b4537879cf2f38fddbb636b","to":"0x1dfd95eb75a7486945d366a0bc0b937f0aaa526f","value":"0x0","gasPrice":"0x3b9aca00","gas":"0xc9e2","data":"0xa9059cbb000000000000000000000000e3ac1cc1453e70f80ff58f3bb56b0532238ae24a00000000000000000000000000000000000000000000003635c9adc5dea00000","input":"0xa9059cbb000000000000000000000000e3ac1cc1453e70f80ff58f3bb56b0532238ae24a00000000000000000000000000000000000000000000003635c9adc5dea00000","type":"0x0","v":"0x2b","s":"0x33a9425e84bf310d372a9f531b237baebccfdd2b426e817cc9553355a9165342","r":"0xe14a066de4787a4c0192f5a2285fd835a85baa3a4f63b1e8a2d8d7f6e04425ca"},"txProof":["0xf891a0311d3b27b7612bf40c2c5d623c62c2afe30a47f486700074e4c4d7cf603c90c8a0cd64d350a95e9286a580a75ae11fe58801992f9ac65ace8a0b853d16f87b09b0a0ae9d609ff06d19bb911d7ad05cfdd6c80a9f1fddccbdb76a78594536122345ce8080808080a09773b23452983c0ed65aebb64522af322967c62be34414e16b32b7e4bdaecdb68080808080808080","0xf8b1a0715f91aae7675a1c8469685d18bc94241d275c82a3b52df6c4fab064fcba3017a0e77ac7615c08eaafccc876956f3dad1892f08c1f1128e2cdf9064664381a540fa06f2d934e5f7995657144ad66b8b5cdce6b6c141422f95d44eb91ca6765d4f819a0b265c005bad056db029945b3d68a631b624a77703733fa9b2042c0f211f8ef4ea0bb97f719cc5f6082fe5bab8588dc564a843a6b40c5494982ded868f19eef07b6808080808080808080808080","0xf8af20b8acf8aa820630843b9aca0082c9e2941dfd95eb75a7486945d366a0bc0b937f0aaa526f80b844a9059cbb000000000000000000000000e3ac1cc1453e70f80ff58f3bb56b0532238ae24a00000000000000000000000000000000000000000000003635c9adc5dea000002ba0e14a066de4787a4c0192f5a2285fd835a85baa3a4f63b1e8a2d8d7f6e04425caa033a9425e84bf310d372a9f531b237baebccfdd2b426e817cc9553355a9165342"],\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionWithProof")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transaction"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TxProof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHeader"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/proof#proof-gettransactionbyhash"},"See also CLI proof.getTransactionByHash")),(0,r.kt)("h2",{id:"proof_gettransactionreceipt"},"proof_getTransactionReceipt"),(0,r.kt)("p",null,"This function should return the same result as ",(0,r.kt)("inlineCode",{parentName:"p"},"eth_call")," and also proofs of all used accounts and their storages and serialized block headers. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"proof_getTransactionReceipt","params":[txHash, includeHeader]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"includeHeader"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptWithProof object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"proof_getTransactionReceipt","params":[txHash, includeHeader],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"receipt":{"transactionHash":"0xfff473e0d10e9dcc18bb4585fb2ba17f682949996f5dfda41c20c425a53b4e71","transactionIndex":"0x0","blockHash":"0x539822db4041dac07f02819b1337f5f9d7291a996f80d9c05ada334c7a97264c","blockNumber":"0x1","cumulativeGasUsed":"0x0","gasUsed":"0x0","to":null,"contractAddress":null,"logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x0","type":"0x0"},"txProof":["0xf851a073ff16e6f3a3ca20ba99ad5bacc973e800ba7ec7092266fcd2520703613e3d9580808080808080a0a70de17dcf5a91c1b986463b4e8419665333b2a66e66f7127baae3d4d58d052d8080808080808080","0xf86530b862f86080018252089400000000000000000000000000000000000000000181801ca0b4e030f395ed357d206b58d9a0ded408589a9e26f1a5b41010772cd0d84b8d16a04d9797a972bc308ea635f22455881c41c7c9fb946c93db6f99d2bd529675af13"],"receiptProof":["0xf851a08e4cd3def722e9727e505d3798454165d832e1aabd5c56e5d0e4e9f0796a783280808080808080a05380738598f169c9e407a0f61558e53ea59a4c5e643aabc57679c7c0a3b761428080808080808080","0xf9012f30b9012bf90128a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421825208b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0"],"blockHeader":"0xf901f9a0b3157bcccab04639f6393042690a6c9862deebe88c781f911e8dfd265531e9ffa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0541c8844bd420f79a5f7f8db723e2106160d350043de7cf76d78ea13ed0ff6c9a0e1b1585a222beceb3887dc6701802facccf186c2d0f6aa69e26ae0c431fc2b5db9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424001833d090080830f424183010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8"},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptWithProof")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Receipt"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptForRpc object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TxProof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptProof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHeader"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CumulativeGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EffectiveGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ContractAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Logs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"LogEntryForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Root"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Status"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/proof#proof-gettransactionreceipt"},"See also CLI proof.getTransactionReceipt")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/230f210b.362e957b.js b/assets/js/230f210b.362e957b.js new file mode 100644 index 000000000..6ad27eef3 --- /dev/null +++ b/assets/js/230f210b.362e957b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4819],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>g});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function d(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),k=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},m=function(t){var e=k(t.components);return n.createElement(p.Provider,{value:e},t.children)},o="mdxType",N={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},b=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,p=t.parentName,m=d(t,["components","mdxType","originalType","parentName"]),o=k(a),b=r,g=o["".concat(p,".").concat(b)]||o[b]||N[b]||l;return a?n.createElement(g,i(i({ref:e},m),{},{components:a})):n.createElement(g,i({ref:e},m))}));function g(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=b;var d={};for(var p in e)hasOwnProperty.call(e,p)&&(d[p]=e[p]);d.originalType=t,d[o]="string"==typeof t?t:r,i[1]=d;for(var k=2;k<l;k++)i[k]=a[k];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}b.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(t){let{children:e,hidden:a,className:i}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>C});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),d=a(6550),p=a(1980),k=a(7392),m=a(12);function o(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function N(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??o(a);return function(t){const e=(0,k.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function b(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function g(t){let{queryString:e=!1,groupId:a}=t;const n=(0,d.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,p._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function c(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=N(t),[i,d]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!b({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[p,k]=g({queryString:a,groupId:n}),[o,c]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,m.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),u=(()=>{const t=p??o;return b({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{u&&d(u)}),[u]);return{selectedValue:i,selectValue:(0,r.useCallback)((t=>{if(!b({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);d(t),k(t),c(t)}),[k,c,l]),tabValues:l}}var u=a(2389);const s={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function f(t){let{className:e,block:a,selectedValue:d,selectValue:p,tabValues:k}=t;const m=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.o5)(),N=t=>{const e=t.currentTarget,a=m.indexOf(e),n=k[a].value;n!==d&&(o(e),p(n))},b=t=>{let e=null;switch(t.key){case"Enter":N(t);break;case"ArrowRight":{const a=m.indexOf(t.currentTarget)+1;e=m[a]??m[0];break}case"ArrowLeft":{const a=m.indexOf(t.currentTarget)-1;e=m[a]??m[m.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},k.map((t=>{let{value:e,label:a,attributes:i}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:d===e?0:-1,"aria-selected":d===e,key:e,ref:t=>m.push(t),onKeyDown:b,onClick:N},i,{className:(0,l.Z)("tabs__item",s.tabItem,i?.className,{"tabs__item--active":d===e})}),a??e)})))}function h(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function y(t){const e=c(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",s.tabList)},r.createElement(f,(0,n.Z)({},t,e)),r.createElement(h,(0,n.Z)({},t,e)))}function C(t){const e=(0,u.Z)();return r.createElement(y,(0,n.Z)({key:String(e)},t))}},4450:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>p,default:()=>g,frontMatter:()=>d,metadata:()=>k,toc:()=>o});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const d={},p="debug",k={unversionedId:"nethermind-utilities/cli/debug",id:"nethermind-utilities/cli/debug",title:"debug",description:"debug.config",source:"@site/docs/06-nethermind-utilities/cli/debug.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/debug",permalink:"/docs/nethermind-utilities/cli/debug",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/debug.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/docs/nethermind-utilities/cli/clique"},next:{title:"diag",permalink:"/docs/nethermind-utilities/cli/diag"}},m={},o=[{value:"debug.config",id:"debugconfig",level:2},{value:"debug.getBlockRlp",id:"debuggetblockrlp",level:2},{value:"debug.getBlockRlpByHash",id:"debuggetblockrlpbyhash",level:2},{value:"debug.getChainLevel",id:"debuggetchainlevel",level:2},{value:"debug.migrateReceipts",id:"debugmigratereceipts",level:2},{value:"debug.traceBlock",id:"debugtraceblock",level:2},{value:"debug.traceBlockByHash",id:"debugtraceblockbyhash",level:2},{value:"debug.traceBlockByNumber",id:"debugtraceblockbynumber",level:2},{value:"debug.traceTransaction",id:"debugtracetransaction",level:2},{value:"debug.traceTransactionByBlockAndIndex",id:"debugtracetransactionbyblockandindex",level:2},{value:"debug.traceTransactionByBlockhashAndIndex",id:"debugtracetransactionbyblockhashandindex",level:2},{value:"debug.traceTransactionInBlockByHash",id:"debugtracetransactioninblockbyhash",level:2},{value:"debug.traceTransactionInBlockByIndex",id:"debugtracetransactioninblockbyindex",level:2}],N={toc:o},b="wrapper";function g(t){let{components:e,...a}=t;return(0,r.kt)(b,(0,n.Z)({},N,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"debug"},"debug"),(0,r.kt)("h2",{id:"debugconfig"},"debug.config"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.config(category, name)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"category"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"name"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of debug.config"',title:'"Example',request:!0,of:!0,'debug.config"':!0},"debug.config(category, name)\n")),(0,r.kt)("h2",{id:"debuggetblockrlp"},"debug.getBlockRlp"),(0,r.kt)("p",null,"Retrieves a block in the RLP-serialized form."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.getBlockRlp(number)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of debug.getBlockRlp"',title:'"Example',request:!0,of:!0,'debug.getBlockRlp"':!0},"debug.getBlockRlp(number)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_getblockrlp"},"See also JSON RPC debug_getBlockRlp")),(0,r.kt)("h2",{id:"debuggetblockrlpbyhash"},"debug.getBlockRlpByHash"),(0,r.kt)("p",null,"Retrieves a block in the RLP-serialized form."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.getBlockRlpByHash(hash)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of debug.getBlockRlpByHash"',title:'"Example',request:!0,of:!0,'debug.getBlockRlpByHash"':!0},"debug.getBlockRlpByHash(hash)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_getblockrlpbyhash"},"See also JSON RPC debug_getBlockRlpByHash")),(0,r.kt)("h2",{id:"debuggetchainlevel"},"debug.getChainLevel"),(0,r.kt)("p",null,"Retrieves a representation of tree branches on a given chain level (Nethermind specific)."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.getChainLevel(number)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ChainLevelForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.getChainLevel(number)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ChainLevelForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockInfos"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockInfoForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"HasBlockOnMainChain"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockInfoForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WasProcessed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsFinalized"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_getchainlevel"},"See also JSON RPC debug_getChainLevel")),(0,r.kt)("h2",{id:"debugmigratereceipts"},"debug.migrateReceipts"),(0,r.kt)("p",null,"Sets the block number up to which receipts will be migrated to (Nethermind specific)."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.migrateReceipts(blockNumber)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of debug.migrateReceipts"',title:'"Example',request:!0,of:!0,'debug.migrateReceipts"':!0},"debug.migrateReceipts(blockNumber)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_migratereceipts"},"See also JSON RPC debug_migrateReceipts")),(0,r.kt)("h2",{id:"debugtraceblock"},"debug.traceBlock"),(0,r.kt)("p",null,"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The\nparent of the block must be present or it will fail."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.traceBlock(blockRlp, options)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockRlp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.traceBlock(blockRlp, options)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_traceblock"},"See also JSON RPC debug_traceBlock")),(0,r.kt)("h2",{id:"debugtraceblockbyhash"},"debug.traceBlockByHash"),(0,r.kt)("p",null,"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the\ndatabase."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.traceBlockByHash(blockHash, options)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.traceBlockByHash(blockHash, options)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_traceblockbyhash"},"See also JSON RPC debug_traceBlockByHash")),(0,r.kt)("h2",{id:"debugtraceblockbynumber"},"debug.traceBlockByNumber"),(0,r.kt)("p",null,'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block\nthat is already present in the database.'),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.traceBlockByNumber(blockParameter, options)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.traceBlockByNumber(blockParameter, options)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_traceblockbynumber"},"See also JSON RPC debug_traceBlockByNumber")),(0,r.kt)("h2",{id:"debugtracetransaction"},"debug.traceTransaction"),(0,r.kt)("p",null,"This method will attempt to run the transaction in the exact same manner as it was executed on the network. It will\nreplay any transaction that may have been executed prior to this one before it will finally attempt to execute the\ntransaction that corresponds to the given hash."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.traceTransaction(transactionHash, options)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.traceTransaction(transactionHash, options)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_tracetransaction"},"See also JSON RPC debug_traceTransaction")),(0,r.kt)("h2",{id:"debugtracetransactionbyblockandindex"},"debug.traceTransactionByBlockAndIndex"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.traceTransactionByBlockAndIndex(blockParameter, txIndex, options)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.traceTransactionByBlockAndIndex(blockParameter, txIndex, options)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_tracetransactionbyblockandindex"},"See also JSON RPC debug_traceTransactionByBlockAndIndex")),(0,r.kt)("h2",{id:"debugtracetransactionbyblockhashandindex"},"debug.traceTransactionByBlockhashAndIndex"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.traceTransactionByBlockhashAndIndex(blockHash, txIndex, options)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.traceTransactionByBlockhashAndIndex(blockHash, txIndex, options)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_tracetransactionbyblockhashandindex"},"See also JSON RPC debug_traceTransactionByBlockhashAndIndex")),(0,r.kt)("h2",{id:"debugtracetransactioninblockbyhash"},"debug.traceTransactionInBlockByHash"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.traceTransactionInBlockByHash(blockRlp, transactionHash, options)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockRlp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.traceTransactionInBlockByHash(blockRlp, transactionHash, options)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_tracetransactioninblockbyhash"},"See also JSON RPC debug_traceTransactionInBlockByHash")),(0,r.kt)("h2",{id:"debugtracetransactioninblockbyindex"},"debug.traceTransactionInBlockByIndex"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"debug.traceTransactionInBlockByIndex(blockRlp, txIndex, options)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockRlp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"debug.traceTransactionInBlockByIndex(blockRlp, txIndex, options)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/debug#debug_tracetransactioninblockbyindex"},"See also JSON RPC debug_traceTransactionInBlockByIndex")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/23285914.6f9d5ff4.js b/assets/js/23285914.6f9d5ff4.js new file mode 100644 index 000000000..d744c8127 --- /dev/null +++ b/assets/js/23285914.6f9d5ff4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8555],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>c});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function o(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var N=n.createContext({}),s=function(t){var e=n.useContext(N),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},d=function(t){var e=s(t.components);return n.createElement(N.Provider,{value:e},t.children)},p="mdxType",f={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,N=t.parentName,d=o(t,["components","mdxType","originalType","parentName"]),p=s(a),m=r,c=p["".concat(N,".").concat(m)]||p[m]||f[m]||l;return a?n.createElement(c,i(i({ref:e},d),{},{components:a})):n.createElement(c,i({ref:e},d))}));function c(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=m;var o={};for(var N in e)hasOwnProperty.call(e,N)&&(o[N]=e[N]);o.originalType=t,o[p]="string"==typeof t?t:r,i[1]=o;for(var s=2;s<l;s++)i[s]=a[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},6434:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>N,contentTitle:()=>i,default:()=>f,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(7462),r=(a(7294),a(3905));const l={},i="JsonRpc",o={unversionedId:"fundamentals/configuration/jsonrpc",id:"fundamentals/configuration/jsonrpc",title:"JsonRpc",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/jsonrpc.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/jsonrpc",permalink:"/docs/fundamentals/configuration/jsonrpc",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/jsonrpc.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Init",permalink:"/docs/fundamentals/configuration/init"},next:{title:"KeyStore",permalink:"/docs/fundamentals/configuration/keystore"}},N={},s=[],d={toc:s},p="wrapper";function f(t){let{components:e,...a}=t;return(0,r.kt)(p,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"jsonrpc"},"JsonRpc"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AdditionalRpcUrls"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Defines additional RPC urls to listen on. Example url format: http://localhost:8550"),(0,r.kt)("td",{parentName:"tr",align:"left"},"http;wss")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BufferResponses"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Buffer responses before sending them to client. This allows to set Content-Length in response instead of using Transfer-Encoding: chunked. This may degrade performance on big responses. Max buffered response size is 2GB, chunked responses can be bigger."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CallsFilterFilePath"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"A path to a file that contains a list of new-line separated approved JSON RPC calls"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Data/jsonrpc.filter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_ENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Defines whether the JSON RPC service is enabled on node startup. Configure host and port if default values do not work for you."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EnabledModules"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Defines which RPC modules should be enabled. Built in modules are: Admin, Clique, Consensus, Db, Debug, Deposit, Erc20, Eth, Evm, Health Mev, NdmConsumer, NdmProvider, Net, Nft, Parity, Personal, Proof, Subscribe, Trace, TxPool, Vault, Web3."),(0,r.kt)("td",{parentName:"tr",align:"left"},"[Eth, Subscribe, Trace, TxPool, Web3, Personal, Proof, Net, Parity, Health, Rpc]")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EngineEnabledModules"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Defines which RPC modules should be enabled Execution Engine port. Built in modules are: Admin, Clique, Consensus, Db, Debug, Deposit, Erc20, Eth, Evm, Health Mev, NdmConsumer, NdmProvider, Net, Nft, Parity, Personal, Proof, Subscribe, Trace, TxPool, Vault, Web3."),(0,r.kt)("td",{parentName:"tr",align:"left"},"[Net, Eth, Subscribe, Web3]")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EngineHost"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_ENGINEHOST"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Host for Execution Engine calls. Ensure the firewall is configured when enabling JSON RPC. If it does not work with 127.0.0.1 try something like 10.0.0.4 or 192.168.0.1"),(0,r.kt)("td",{parentName:"tr",align:"left"},'"127.0.0.1"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EnginePort"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_ENGINEPORT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Port for Execution Engine calls. Ensure the firewall is configured when enabling JSON RPC."),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EthModuleConcurrentInstances"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Number of concurrent instances for non-sharable calls (eth_call, eth_estimateGas, eth_getLogs, eth_newFilter, eth_newBlockFilter, eth_newPendingTransactionFilter, eth_uninstallFilter). This will limit load on the node CPU and IO to reasonable levels. If this limit is exceeded on Http calls 503 Service Unavailable will be returned along with Json RPC error. Defaults to number of logical processes."),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasCap"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_GASCAP"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas limit for eth_call and eth_estimateGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},"100000000")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Host"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_HOST"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Host for JSON RPC calls. Ensure the firewall is configured when enabling JSON RPC. If it does not work with 127.0.0.1 try something like 10.0.0.4 or 192.168.0.1"),(0,r.kt)("td",{parentName:"tr",align:"left"},'"127.0.0.1"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IpcUnixDomainSocketPath"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"The path to connect a unix domain socket over."),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"JwtSecretFile"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Path to file with hex encoded secret for jwt authentication"),(0,r.kt)("td",{parentName:"tr",align:"left"},"keystore/jwt-secret")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxBatchResponseBodySize"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Max response body size when using batch requests, subsequent requests are trimmed"),(0,r.kt)("td",{parentName:"tr",align:"left"},"30000000")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxBatchSize"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Limit batch size for batched json rpc call"),(0,r.kt)("td",{parentName:"tr",align:"left"},"1024")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxLoggedRequestParametersCharacters"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Limits the Maximum characters printing to log for parameters of any Json RPC service request"),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxRequestBodySize"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Max HTTP request body size"),(0,r.kt)("td",{parentName:"tr",align:"left"},"30000000")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MethodsLoggingFiltering"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING"),(0,r.kt)("td",{parentName:"tr",align:"left"},'Defines method names of Json RPC service requests to NOT log. Example: {"eth_blockNumber"} will not log "eth_blockNumber" requests.'),(0,r.kt)("td",{parentName:"tr",align:"left"},"[engine_newPayloadV1, engine_newPayloadV2, engine_newPayloadV3, engine_forkchoiceUpdatedV1, engine_forkchoiceUpdatedV2]")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Port"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_PORT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Port number for JSON RPC calls. Ensure the firewall is configured when enabling JSON RPC."),(0,r.kt)("td",{parentName:"tr",align:"left"},"8545")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReportIntervalSeconds"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Interval between the JSON RPC stats report log"),(0,r.kt)("td",{parentName:"tr",align:"left"},"300")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RpcRecorderBaseFilePath"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Base file path for diagnostic JSON RPC recorder."),(0,r.kt)("td",{parentName:"tr",align:"left"},'"logs/rpc.{counter}.txt"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RpcRecorderState"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Defines whether the JSON RPC diagnostic recording is enabled on node startup. Do not enable unless you are a DEV diagnosing issues with JSON RPC. Possible values: None/Request/Response/All."),(0,r.kt)("td",{parentName:"tr",align:"left"},"None")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_TIMEOUT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"JSON RPC' timeout value given in milliseconds."),(0,r.kt)("td",{parentName:"tr",align:"left"},"20000")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WebSocketsPort"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Port number for JSON RPC web sockets calls. By default same port is used as regular JSON RPC. Ensure the firewall is configured when enabling JSON RPC."),(0,r.kt)("td",{parentName:"tr",align:"left"},"8545")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/23374ca6.1d53a022.js b/assets/js/23374ca6.1d53a022.js new file mode 100644 index 000000000..63722e512 --- /dev/null +++ b/assets/js/23374ca6.1d53a022.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8421],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(n),p=o,h=d["".concat(s,".").concat(p)]||d[p]||m[p]||i;return n?r.createElement(h,a(a({ref:t},u),{},{components:n})):r.createElement(h,a({ref:t},u))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,a[1]=l;for(var c=2;c<i;c++)a[c]=n[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},6527:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(7462),o=(n(7294),n(3905));const i={},a="Welcome to Nethermind",l={unversionedId:"README",id:"README",title:"Welcome to Nethermind",description:"Welcome to the Nethermind Client documentation! Nethermind is a leading provider of Ethereum solutions for developers",source:"@site/docs/README.md",sourceDirName:".",slug:"/",permalink:"/docs/",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/README.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Contact Us",permalink:"/docs/contact/"}},s={},c=[],u={toc:c},d="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"welcome-to-nethermind"},"Welcome to Nethermind"),(0,o.kt)("p",null,"Welcome to the Nethermind Client documentation! Nethermind is a leading provider of Ethereum solutions for developers\nand enterprises. Founded in 2017 by a small team of world-class technologists, Nethermind has worked tirelessly to\ndeliver the fastest Ethereum client in the market. Boosted by a grant from the Ethereum Foundation in August 2018, our\nteam has built a flagship Ethereum client that is all about performance and flexibility."),(0,o.kt)("p",null,"The Nethermind Client is built on .NET core, a widespread, enterprise-friendly platform that makes integration with\nexisting infrastructures simple. At the same time, the Nethermind Client does not compromise on stability, reliability,\ndata integrity, and security. Whether you're a developer looking to build decentralized applications on the Ethereum\nnetwork, an enterprise looking for a reliable Ethereum solution, or a user looking to interact with the Ethereum\nblockchain, the Nethermind Client has you covered."),(0,o.kt)("p",null,"In this documentation, you'll find information on how to install and configure the Nethermind Client, as well as how to\nuse its various features. We've organized the documentation by topic to make it easy for you to find the information you\nneed, and we've included plenty of examples and visuals to help you understand how to use the Nethermind Client."),(0,o.kt)("p",null,"We hope you find this documentation helpful, and we welcome your feedback and suggestions for how we can continue to\nimprove the Nethermind Client and its documentation."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2359c720.d491ee7f.js b/assets/js/2359c720.d491ee7f.js new file mode 100644 index 000000000..1f25999ff --- /dev/null +++ b/assets/js/2359c720.d491ee7f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7208],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>g});var r=n(7294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function o(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){a(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function l(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n,r,a={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}var d=r.createContext({}),s=function(t){var e=r.useContext(d),n=e;return t&&(n="function"==typeof t?t(e):o(o({},e),t)),n},p=function(t){var e=s(t.components);return r.createElement(d.Provider,{value:e},t.children)},c="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},f=r.forwardRef((function(t,e){var n=t.components,a=t.mdxType,i=t.originalType,d=t.parentName,p=l(t,["components","mdxType","originalType","parentName"]),c=s(n),f=a,g=c["".concat(d,".").concat(f)]||c[f]||m[f]||i;return n?r.createElement(g,o(o({ref:e},p),{},{components:n})):r.createElement(g,o({ref:e},p))}));function g(t,e){var n=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var i=n.length,o=new Array(i);o[0]=f;var l={};for(var d in e)hasOwnProperty.call(e,d)&&(l[d]=e[d]);l.originalType=t,l[c]="string"==typeof t?t:a,o[1]=l;for(var s=2;s<i;s++)o[s]=n[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},1743:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));const i={},o="TxPool",l={unversionedId:"monitoring/metrics-explanation/txpool",id:"monitoring/metrics-explanation/txpool",title:"TxPool",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/txpool.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/txpool",permalink:"/docs/monitoring/metrics-explanation/txpool",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/txpool.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Trie.Pruning",permalink:"/docs/monitoring/metrics-explanation/trie.pruning"},next:{title:"Monitoring Node's Health",permalink:"/docs/monitoring/monitoring-node-health"}},d={},s=[],p={toc:s},c="wrapper";function m(t){let{components:e,...n}=t;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"txpool"},"TxPool"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_dark_pool_ratio_level1"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Ratio of transactions in the block absent in hashCache.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_dark_pool_ratio_level2"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Ratio of transactions in the block absent in pending transactions.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eip1559_transactions_ratio"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Ratio of 1559-type transactions in the block.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending1559_transactions_added"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending 1559-type transactions added to transaction pool.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_added"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions added to transaction pool.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_balance_below_value"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored because balance is less than txn value.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_discarded"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_evicted"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions evicted from transaction pool.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_gas_limit_too_high"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored because the gas limit was to high for the block.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_hashes_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of hashes of pending transactions broadcasted to peers.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_known"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of already known pending transactions.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_low_nonce"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of transactions with already used nonce.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_malformed"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of malformed transactions.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_nonce_gap"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_passed_filters_but_cannot_compete_on_fees"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received from peers.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions broadcasted to peers.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_too_low_balance"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_too_low_fee"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_unresolvable_sender"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored because the sender couldn't be resolved.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_with_expensive_filtering"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions that reached filters which are resource expensive")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pending_transactions_zero_balance"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of pending transactions received that were ignored because balance is zero and cannot pay gas.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_transaction_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of transactions in pool.")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/247783bb.70797f38.js b/assets/js/247783bb.70797f38.js new file mode 100644 index 000000000..2c4089002 --- /dev/null +++ b/assets/js/247783bb.70797f38.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9334],{3769:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/247dabad.0594d128.js b/assets/js/247dabad.0594d128.js new file mode 100644 index 000000000..bdc4c8149 --- /dev/null +++ b/assets/js/247dabad.0594d128.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4867],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,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 o(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 s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=a.createContext({}),u=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=u(e.components);return a.createElement(i.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),h=u(n),c=r,m=h["".concat(i,".").concat(c)]||h[c]||p[c]||o;return n?a.createElement(m,s(s({ref:t},d),{},{components:n})):a.createElement(m,s({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=c;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[h]="string"==typeof e?e:r,s[1]=l;for(var u=2;u<o;u++)s[u]=n[u];return a.createElement.apply(null,s)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},7897:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var a=n(7462),r=(n(7294),n(3905));const o={},s="Eth2 Validator",l={unversionedId:"resources/guides-and-helpers/validator-setup/eth2-validator",id:"resources/guides-and-helpers/validator-setup/eth2-validator",title:"Eth2 Validator",description:"Introduction",source:"@site/docs/07-resources/guides-and-helpers/validator-setup/eth2-validator.md",sourceDirName:"07-resources/guides-and-helpers/validator-setup",slug:"/resources/guides-and-helpers/validator-setup/eth2-validator",permalink:"/docs/resources/guides-and-helpers/validator-setup/eth2-validator",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/guides-and-helpers/validator-setup/eth2-validator.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Aura Validator",permalink:"/docs/resources/guides-and-helpers/validator-setup/aura-validator"},next:{title:"Known Issues",permalink:"/docs/resources/know-issues"}},i={},u=[{value:"Introduction",id:"introduction",level:2},{value:"Using Testnets",id:"using-testnets",level:3},{value:"Hardware and Network Requirements",id:"hardware-and-network-requirements",level:3},{value:"Setup",id:"setup",level:2},{value:"Installing Prerequisites",id:"installing-prerequisites",level:3},{value:"<strong>Installing Nethermind</strong>",id:"installing-nethermind",level:4},{value:"<strong>Installing Consensus Client</strong>",id:"installing-consensus-client",level:4},{value:"Configuration",id:"configuration",level:3},{value:"Syncing your node",id:"syncing-your-node",level:3},{value:"Running a Validator",id:"running-a-validator",level:2},{value:"Generating Validator Keys",id:"generating-validator-keys",level:3},{value:"<strong>Staking deposit cli</strong>",id:"staking-deposit-cli",level:4},{value:"<strong>Wagyu Key Gen</strong>",id:"wagyu-key-gen",level:4},{value:"Depositing ETH",id:"depositing-eth",level:3},{value:"Depositing on Testnets",id:"depositing-on-testnets",level:4},{value:"Configuring a Validator",id:"configuring-a-validator",level:3},{value:"Validator Tips and Tricks",id:"validator-tips-and-tricks",level:3},{value:"Monitoring",id:"monitoring",level:4},{value:"Credits",id:"credits",level:2}],d={toc:u},h="wrapper";function p(e){let{components:t,...o}=e;return(0,r.kt)(h,(0,a.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"eth2-validator"},"Eth2 Validator"),(0,r.kt)("h2",{id:"introduction"},"Introduction"),(0,r.kt)("p",null,"This tutorial will allow anyone to set up an Ethereum Validator node as long as you have the sufficient hardware\nrequirements and familiarity with the command line. This guide will use installation instructions for Ubuntu 20.04 but\ninstructions to other operating systems will be linked."),(0,r.kt)("h3",{id:"using-testnets"},"Using Testnets"),(0,r.kt)("p",null,"We highly recommend you use one of the following test networks before you attempt running a validator on Ethereum\nMainnet to get familiarized with the process:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Ropsten"),(0,r.kt)("li",{parentName:"ul"},"Kiln")),(0,r.kt)("p",null,"Coming Soon"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Sepolia"),(0,r.kt)("li",{parentName:"ul"},"Goerli")),(0,r.kt)("p",null,"We will go through the most important steps in the ",(0,r.kt)("a",{parentName:"p",href:"https://launchpad.ethereum.org/en/checklist"},"checklist")," and\na ",(0,r.kt)("a",{parentName:"p",href:"https://kiln.launchpad.ethereum.org/en/overview"},"general overview")," of the responsibilities of a validator provided by\nthe Ethereum foundation."),(0,r.kt)("h3",{id:"hardware-and-network-requirements"},"Hardware and Network Requirements"),(0,r.kt)("p",null,"You will need to run two pieces of software on your machine to run a validator. The two software have several different\nimplementations maintained by different teams. Each implementation has their own hardware requirements, but generally\nyou would need for mainnet:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Memory: 16 GB RAM"),(0,r.kt)("li",{parentName:"ul"},"Processor: Intel Core i5\u2013760 or better (CPUs made later than 2010 are usually fine)"),(0,r.kt)("li",{parentName:"ul"},"Storage: 1 TB SSD"),(0,r.kt)("li",{parentName:"ul"},"Network: Broadband connection (preferably wired)")),(0,r.kt)("p",null,"Please consult the docs / website of the specific client software you choose to run the Ethereum chain with. Note that\nthe hardware requirements are lower if you intend to run on testnets only."),(0,r.kt)("h2",{id:"setup"},"Setup"),(0,r.kt)("h3",{id:"installing-prerequisites"},"Installing Prerequisites"),(0,r.kt)("p",null,"The two pieces of software to run a node for proof of stake Ethereum are called the consensus client and the execution\nclient. The consensus client maintains the proof of stake consensus mechanism while the execution client stores and\nvalidates transactions for the proof of stake layer."),(0,r.kt)("p",null,"Install these prerequisites before proceeding:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt -y install software-properties-common wget curl ccze\n")),(0,r.kt)("p",null,"This guide will go through the Nethermind and Lighthouse client combination."),(0,r.kt)("h4",{id:"installing-nethermind"},(0,r.kt)("strong",{parentName:"h4"},"Installing Nethermind")),(0,r.kt)("p",null,"Run the following command to install Nethermind:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo add-apt-repository ppa:nethermindeth/nethermind; sudo apt install nethermind\n")),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind-post-merge"},"here")," for docs for\nother ways to install Nethermind."),(0,r.kt)("h4",{id:"installing-consensus-client"},(0,r.kt)("strong",{parentName:"h4"},"Installing Consensus Client")),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="Lighthouse" %}\nDownload the ',(0,r.kt)("a",{parentName:"p",href:"https://github.com/sigp/lighthouse/releases"},"latest release")," from lighthouse. You can also install\nlighthouse through other methods by following ",(0,r.kt)("a",{parentName:"p",href:"https://lighthouse-book.sigmaprime.io/installation.html"},"their docs"),". To\ninstall v2.3.1 of lighthouse (latest release as of June 21 2022):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"wget <https://github.com/sigp/lighthouse/releases/download/v2.3.1/lighthouse-v2.3.1-x86_64-unknown-linux-gnu.tar.gz>\ntar xvf lighthouse-v2.3.1-x86_64-unknown-linux-gnu.tar.gz\nrm lighthouse-v2.3.1-x86_64-unknown-linux-gnu.tar.gz\n")),(0,r.kt)("p",null,"Install globally:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo cp ~/lighthouse /usr/local/bin\nrm ~/lighthouse\n")),(0,r.kt)("p",null,"{% endtab %}"),(0,r.kt)("p",null,'{% tab title="Teku" %}\nYou can install Teku\nfollowing ',(0,r.kt)("a",{parentName:"p",href:"https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Installation-Options/Install-Binaries/"},"their docs"),". \\\nQuick guide how to install Teku using binary distribution:\\"),(0,r.kt)("p",null,"Check if Java is already installed on Your machine:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"Java --version\n")),(0,r.kt)("p",null,"if not You can use this command to install it:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt install default-jdk\n")),(0,r.kt)("p",null,"Then, download Teku and extract it (currently latest version is 22.8.1):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"wget https://artifacts.consensys.net/public/teku/raw/names/teku.tar.gz/versions/22.8.1/teku-22.8.1.tar.gz\ntar xvf teku-22.8.1.tar.gz\nrm teku-22.8.1.tar.gz\n")),(0,r.kt)("p",null,"Install globally:"),(0,r.kt)("pre",{class:"language-bash"},(0,r.kt)("code",{class:"lang-bash"},(0,r.kt)("strong",null,"sudo cp -r teku-22.8.1 /usr/local/bin"),"rm teku-22.8.1")),(0,r.kt)("p",null,"{% endtab %}\n{% endtabs %}"),(0,r.kt)("h3",{id:"configuration"},"Configuration"),(0,r.kt)("p",null,"It is recommended to run the consensus and execution client as a systemd service, which will allow the two processes run\nin the background and start up again if your machine restarts, improving reliability and uptime of your validator. This\nis not as crucial for running testnet validators and you can\nfollow ",(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge"},"this guide")," on\nhow to connect to testnets with Nethermind and other consensus clients."),(0,r.kt)("p",null,"Create a dedicated user for Nethermind. This will set up the correct permissions and directory where the chain data is\nstored."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo useradd -m -s /bin/false nethermindeth\nsudo mkdir -p /var/lib/nethermind\nsudo chown -R nethermindeth:nethermindeth /var/lib/nethermind\nsudo chown -R nethermindeth:nethermindeth /usr/share/nethermind\n")),(0,r.kt)("p",null,"Create a JWT Token which will be used to communicate between consensus and execution clients. For more information about\nJWT Token please refer\nto ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind-post-merge#step-3--configure-json-rpc-api"},"this section"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'openssl rand -hex 32 | tr -d "\\n" > "/var/lib/nethermind/jwt-secret"\n')),(0,r.kt)("p",null,"Create a systemd config file. This will run Nethermind as a systemd service on your machine."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo nano /etc/systemd/system/nethermind.service\n")),(0,r.kt)("p",null,"Paste the following service configuration into the file"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'[Unit]\nDescription=Nethermind Ethereum Client\nAfter=network.target\nWants=network.target\n\n[Service]\nUser=nethermindeth\nGroup=nethermindeth\nType=simple\nRestart=always\nRestartSec=5\nTimeoutStopSec=180\nWorkingDirectory=/home/nethermindeth\nExecStart=/usr/share/nethermind/Nethermind.Runner \\\n --config mainnet \\\n --Init.BaseDbPath /var/lib/nethermind \\\n --JsonRpc.Enabled true \\\n --JsonRpc.EngineHost "0.0.0.0" \\\n --JsonRpc.EnginePort 8551 \\\n --JsonRpc.JwtSecretFile /var/lib/nethermind/jwt-secret\n\n[Install]\nWantedBy=default.target\n')),(0,r.kt)("p",null,"To close and save the file, press ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl"),"+ ",(0,r.kt)("inlineCode",{parentName:"p"},"X"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"Y"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"Enter"),"."),(0,r.kt)("p",null,"Reload systemd to reflect the changes and start the nethermind service. The status should say active in green text. If\nnot, repeat the configuration steps and see if it resolves the problem"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl daemon-reload\nsudo systemctl start nethermind.service\nsudo systemctl status nethermind.service\n")),(0,r.kt)("p",null,"Press ",(0,r.kt)("inlineCode",{parentName:"p"},"Q")," to quit viewing the status. Enable the nethermind service to automatically start on reboot:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl enable nethermind.service\n")),(0,r.kt)("p",null,"To see the Nethermind logs:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo journalctl -f -u nethermind.service -o cat | ccze -A\n")),(0,r.kt)("p",null,"Press ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"C")," to stop showing those messages."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},'If any path from sample would be changed (like "Init.baseDbPath") please ensure that You set newly added user as a owner\nof this directory and execute "',(0,r.kt)("em",{parentName:"p"},"systemctl restart nethermind.service"),'" command.')),(0,r.kt)("p",null,"Now repeat the process to run a CL beacon chain:"),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="Lighthouse" %}'),(0,r.kt)("pre",{class:"language-bash"},(0,r.kt)("code",{class:"lang-bash"},(0,r.kt)("strong",null,"sudo useradd --no-create-home --shell /bin/false lighthousebeacon"),"sudo mkdir -p /var/lib/lighthouse sudo chown -R lighthousebeacon:lighthousebeacon /var/lib/lighthouse")),(0,r.kt)("p",null,"Add systemd file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo nano /etc/systemd/system/lighthousebeacon.service\n")),(0,r.kt)("p",null,"Paste the following in:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'[Unit]\nDescription=Lighthouse Ethereum Client Beacon Node\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nType=simple\nUser=lighthousebeacon\nGroup=lighthousebeacon\nRestart=always\nRestartSec=5\nExecStart=/usr/local/bin/lighthouse bn \\\\\n --network mainnet \\\\\n --datadir /var/lib/lighthouse \\\\\n --staking \\\\\n --http-allow-sync-stalled \\\\\n --merge \\\\\n --execution-endpoints <http://127.0.0.1:8551> \\\\\n --metrics-explanation \\\\\n --validator-monitor-auto \\\\\n --jwt-secrets="/var/lib/nethermind/jwt-secret"\n\n[Install]\nWantedBy=multi-user.target\n')),(0,r.kt)("p",null,"The beacon node needs to share something called a JWT secret with Nethermind, so let the secret be accessible to all\nusers:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo chmod +r /var/lib/nethermind/jwt-secret\n")),(0,r.kt)("p",null,"Reload and start the lighthouse node. The status should say active in green text if running correctly. If not, repeat\nthe configuration steps and see if it resolves the problem."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl daemon-reload\nsudo systemctl start lighthousebeacon.service\nsudo systemctl status lighthousebeacon.service\n")),(0,r.kt)("p",null,"Enable the Lighthouse beacon node service to automatically start on reboot."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl enable lighthousebeacon.service\n")),(0,r.kt)("p",null,"You can watch the logs from your Lighthouse beacon node using this command. Lighthouse may show errors if Nethermind is\nnot synced, so wait until Nethermind is synced to see if the errors persist."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo journalctl -f -u lighthousebeacon.service -o cat | ccze -A\n")),(0,r.kt)("p",null,"Press ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"C")," to stop showing those messages.\n{% endtab %}"),(0,r.kt)("p",null,'{% tab title="Teku" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo useradd --no-create-home --shell /bin/false tekubeacon\nsudo mkdir -p /var/lib/teku\nsudo chown -R tekubeacon:tekubeacon /var/lib/teku\n")),(0,r.kt)("p",null,"Add systemd file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo nano /etc/systemd/system/tekubeacon.service\n")),(0,r.kt)("p",null,"Paste the following in (make sure to replace the ",(0,r.kt)("inlineCode",{parentName:"p"},"0x0000000000000000000000000000000000000000")," address with your own\nEthereum address where you want to receive the proceeds from transaction fees (post merge)):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"[Unit]\nDescription=Teku Ethereum Client Beacon Node\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nType=simple\nUser=tekubeacon\nGroup=tekubeacon\nRestart=always\nRestartSec=5\nExecStart=/usr/local/bin/teku-22.8.1 \\\n --network mainnet \\\n --data-path /var/lib/teku/datadir-teku \\\n --ee-endpoint http://localhost:8551 \\\n --ee-jwt-secret-file /var/lib/nethermind/jwt-secret \\\n --rest-api-enabled\n --validators-proposer-default-fee-recipient=0x0000000000000000000000000000000000000000\n\n[Install]\nWantedBy=multi-user.target\n")),(0,r.kt)("p",null,"The beacon node needs to share something called a JWT secret with Nethermind, so let the secret be accessible to all\nusers:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo chmod +r /var/lib/nethermind/jwt-secret\n")),(0,r.kt)("p",null,"Reload and start the lighthouse node. The status should say active in green text if running correctly. If not, repeat\nthe configuration steps and see if it resolves the problem."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl daemon-reload\nsudo systemctl start tekubeacon.service\nsudo systemctl status tekubeacon.service\n")),(0,r.kt)("p",null,"Enable the Teku beacon node service to automatically start on reboot."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl enable tekubeacon.service\n")),(0,r.kt)("p",null,"You can watch the logs from your Teku beacon node using this command. Teku may show errors if Nethermind is not synced,\nso wait until Nethermind is synced to see if the errors persist."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo journalctl -f -u tekubeacon.service -o cat | ccze -A\n")),(0,r.kt)("p",null,"Press ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"C")," to stop showing those messages.\n{% endtab %}\n{% endtabs %}"),(0,r.kt)("h3",{id:"syncing-your-node"},"Syncing your node"),(0,r.kt)("p",null,"The execution client still stores the blockchain state from the old proof of work chain, so it can take days to weeks to\nfully sync with the network, depending on your sync mode, hardware and network. The consensus client will also typically\ntake a few days to fully sync on mainnet."),(0,r.kt)("p",null,"Please ensure both processes are synced before running your validator. Without the latest state your validator will not\nbe able to vote and earn rewards on the proof of stake chain."),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="Nethermind" %}\nA Nethermind node should be synced if the logs no longer say it is downloading blocks. Post merge, new payloads from the\nconsensus client should display VALID instead of SYNCING in the logs.'),(0,r.kt)("h2",{id:"running-a-validator"},"Running a Validator"),(0,r.kt)("h3",{id:"generating-validator-keys"},"Generating Validator Keys"),(0,r.kt)("p",null,"You will need to generate keys for your validator. These keys are the ONLY way to withdraw your funds after staking your\nETH, so you have to ensure you have backed up your keys. There are two options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/ethereum/staking-deposit-cli"},"staking-deposit-cli")," - recommended for those comfortable with the\ncommand line"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/stake-house/wagyu-key-gen"},"Wagyu Key Gen")," - desktop app, choose the correct network (mainnet,\nkiln) to generate your validator keys")),(0,r.kt)("h4",{id:"staking-deposit-cli"},(0,r.kt)("strong",{parentName:"h4"},"Staking deposit cli")),(0,r.kt)("p",null,"Copy the following commands into your terminal to download the cli and generate your keys. Change ",(0,r.kt)("inlineCode",{parentName:"p"},"num_validators"),"\nand ",(0,r.kt)("inlineCode",{parentName:"p"},"chain")," to the number of validators and / or testnet name you want to run."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"wget <https://github.com/ethereum/staking-deposit-cli/releases/download/v2.3.0/staking_deposit-cli-76ed782-linux-amd64.tar.gz>\ntar xvf staking_deposit-cli-9ab0b05-linux-amd64.tar.gz\ncd staking_deposit-cli-9ab0b05-linux-amd64/\n./deposit new-mnemonic --num_validators 1 --chain mainnet\n")),(0,r.kt)("p",null,"Above should result with small structure created:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"main directory (starts with ",(0,r.kt)("em",{parentName:"li"},'"staking',"_",'"'),")",(0,r.kt)("ol",{parentName:"li"},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("em",{parentName:"li"},"keys")," directory",(0,r.kt)("ol",{parentName:"li"},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("em",{parentName:"li"},"keystore")," json file"),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("em",{parentName:"li"},"deposit","_","data")," json file"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("em",{parentName:"li"},"deposit")," file")))),(0,r.kt)("p",null,"A ",(0,r.kt)("em",{parentName:"p"},"keystore")," file will be used later on to start Validator client on machine."),(0,r.kt)("p",null,"A ",(0,r.kt)("em",{parentName:"p"},"deposit","_","data")," file will be used for launchpad to confirm Identity and send 32 ETH which will be used for Validator\npurpose."),(0,r.kt)("h4",{id:"wagyu-key-gen"},(0,r.kt)("strong",{parentName:"h4"},"Wagyu Key Gen")),(0,r.kt)("p",null,"Download wagyu from ",(0,r.kt)("a",{parentName:"p",href:"https://wagyu.gg/"},"their website")," and select the download compatible with your operating system."),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(1634).Z,width:"1894",height:"1492"})),(0,r.kt)("p",null,"Clicking on the top right corner you can select the network you want to generate your keys for. If not connecting to a\ntestnet, let the network default to mainnet."),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(1011).Z,width:"1894",height:"1494"})),(0,r.kt)("p",null,"Click on \u2018Create New Secret Recovery Phrase\u2019 and you will be taken through the process of generating a 24 word secret to\ngenerate your validator keys. The number of keys you generate should match the number of validators you intend to run."),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(7562).Z,width:"1896",height:"1490"})),(0,r.kt)("p",null,"When finished you should end up with a deposit file (starts with ",(0,r.kt)("inlineCode",{parentName:"p"},"deposit_data-"),"and ends with ",(0,r.kt)("inlineCode",{parentName:"p"},".json"),") and a keystore\nfile (starts with ",(0,r.kt)("inlineCode",{parentName:"p"},"keystore-"),"and ends with ",(0,r.kt)("inlineCode",{parentName:"p"},".json"),") per validator from both methods."),(0,r.kt)("h3",{id:"depositing-eth"},"Depositing ETH"),(0,r.kt)("p",null,"Next you will need to deposit ETH into the deposit contract. One validator requires 32 ETH to run. Go\nto ",(0,r.kt)("a",{parentName:"p",href:"https://launchpad.ethereum.org/en/"},"the mainnet launchpad")," to use your wallet and your deposit file to perform the\ndeposit. The launchpad will go through similar instructions as this guide to ensure you have performed them."),(0,r.kt)("h4",{id:"depositing-on-testnets"},"Depositing on Testnets"),(0,r.kt)("p",null,"You will need testnet ETH in order to run a validator."),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="Kiln" %}\nGo to the ',(0,r.kt)("a",{parentName:"p",href:"https://kiln.themerge.dev/"},"official Kiln website")," and click on the ",(0,r.kt)("em",{parentName:"p"},"Add network to MetaMask")," button."),(0,r.kt)("p",null,"Get testnet ETH:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://faucet.kiln.ethdevops.io/"},"https://faucet.kiln.ethdevops.io/")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://kiln-faucet.pk-net.net/"},"https://kiln-faucet.pk-net.net/"))),(0,r.kt)("p",null,"Go to the launchpad and follow the instructions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://kiln.launchpad.ethereum.org/en/"},"https://kiln.launchpad.ethereum.org/en/"))),(0,r.kt)("p",null,"Check the status of your validator on the beacon chain:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://beaconchain.kiln.themerge.dev"},"https://beaconchain.kiln.themerge.dev"),"\n{% endtab %}")),(0,r.kt)("p",null,'{% tab title="Ropsten" %}\nGet testnet ETH:'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://faucet.egorfine.com/"},"https://faucet.egorfine.com/")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://faucet.metamask.io/"},"https://faucet.metamask.io/")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://faucet.dimensions.network/"},"https://faucet.dimensions.network/"))),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://ethstaker.cc/"},"ethstaker")," community discord can provide testnet ETH if you don\u2019t have enough to deposit 32\nETH."),(0,r.kt)("p",null,"Go to the launchpad and follow the instructions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://ropsten.launchpad.ethereum.org/en/"},"https://ropsten.launchpad.ethereum.org/en/"))),(0,r.kt)("p",null,"Check the status of your validator on the beacon chain:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://ropsten.beaconcha.in/"},"https://ropsten.beaconcha.in/"),"\n{% endtab %}")),(0,r.kt)("p",null,'{% tab title="Goerli" %}\nGet testnet ETH:'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://goerlifaucet.com/"},"https://goerlifaucet.com")," (No auth, or social media account required)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://fauceth.komputing.org/?chain=5"},"https://fauceth.komputing.org/?chain=5")," (No social media account required)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://faucet.paradigm.xyz/"},"https://faucet.paradigm.xyz/")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://faucet.goerli.mudit.blog/"},"https://faucet.goerli.mudit.blog/")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://faucets.chain.link/goerli"},"https://faucets.chain.link/goerli")," (No social media account required)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://goerli-faucet.pk910.de/"},"https://goerli-faucet.pk910.de/")," (PoW powered, No social media account required)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://goerli-faucet.com/"},"https://goerli-faucet.com/")," (",(0,r.kt)("a",{parentName:"li",href:"https://github.com/ayanamitech/ethereum-faucet"},"Open Source"),",\nTelegram Bot authenticated, No social media account required)")),(0,r.kt)("p",null,"Go to the launchpad and follow the instructions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://goerli.launchpad.ethereum.org/en/"},"https://goerli.launchpad.ethereum.org/en/"))),(0,r.kt)("p",null,"Check the status of your validator on the beacon chain:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://goerli.beaconcha.in/"},"https://goerli.beaconcha.in/"),"\n{% endtab %}\n{% endtabs %}")),(0,r.kt)("h3",{id:"configuring-a-validator"},"Configuring a Validator"),(0,r.kt)("p",null,"DO NOT run two validators with the same keys. This can lead to your validator signing two different blocks and lead\nto ",(0,r.kt)("a",{parentName:"p",href:"https://consensys.net/knowledge-base/ethereum-2/glossary/"},"slashing")," which will significantly reduce your staked\nETH."),(0,r.kt)("p",null,"Like configuring your consensus and execution client, create a dedicated user for your validator:"),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="Lighthouse" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo useradd --no-create-home --shell /bin/false lighthousevalidator\nsudo mkdir -p /var/lib/lighthouse/validators\nsudo chown -R lighthousevalidator:lighthousevalidator /var/lib/lighthouse/validators\nsudo chmod 700 /var/lib/lighthouse/validators\n")),(0,r.kt)("p",null,"{% endtab %}"),(0,r.kt)("p",null,'{% tab title="Teku" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo useradd --no-create-home --shell /bin/false tekuvalidator\nsudo mkdir -p /home/tekuvalidator\nsudo chown -R tekuvalidator:tekuvalidator /home/tekuvalidator\n")),(0,r.kt)("p",null,"Also ensure that new user has access to keystore files:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo chown -R tekuvalidator:tekuvalidator /path/to/keystores\n")),(0,r.kt)("p",null,"{% endtab %}\n{% endtabs %}"),(0,r.kt)("p",null,"Below there is a description on how to start Validator service for various CL on Your machine."),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="Lighthouse" %}\nThe keystore file (generated previously and starts with ',(0,r.kt)("inlineCode",{parentName:"p"},"keystore-")," ) needs to be imported for the Lighthouse validator\nclient. Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"/path/to/keystores")," with the absolute path you saved your keystore file."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo /usr/local/bin/lighthouse account validator import \\\\\n --directory /path/to/keystores \\\\\n --datadir /var/lib/lighthouse \\\\\n --network mainnet\nsudo chown -R lighthousevalidator:lighthousevalidator /var/lib/lighthouse/validators\n")),(0,r.kt)("p",null,"The command will prompt for your keystore password."),(0,r.kt)("p",null,"Create the systemd file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo nano /etc/systemd/system/lighthousevalidator.service\n")),(0,r.kt)("p",null,"Paste the following configuration into the file. Make sure to replace the ",(0,r.kt)("inlineCode",{parentName:"p"},"0x0000000000000000000000000000000000000000"),"\naddress with your own Ethereum address where you want to receive the proceeds from transaction fees (post merge)."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"[Unit]\nDescription=Lighthouse Ethereum Client Validator Client\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nUser=lighthousevalidator\nGroup=lighthousevalidator\nType=simple\nRestart=always\nRestartSec=5\nExecStart=/usr/local/bin/lighthouse vc \\\\\n --network mainnet \\\\\n --datadir /var/lib/lighthouse \\\\\n --metrics-explanation \\\\\n --suggested-fee-recipient 0x0000000000000000000000000000000000000000\n\n[Install]\nWantedBy=multi-user.target\n")),(0,r.kt)("p",null,"Reload systemd to reflect the changes and start the service. Check the status to make sure it\u2019s running correctly."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl daemon-reload\nsudo systemctl start lighthousevalidator.service\nsudo systemctl status lighthousevalidator.service\n")),(0,r.kt)("p",null,"Enable the Lighthouse validator client service to automatically start on reboot."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl enable lighthousevalidator.service\n")),(0,r.kt)("p",null,"You can watch the live messages from your Lighthouse validator client logs using this command."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo journalctl -f -u lighthousevalidator.service -o cat | ccze -A\n")),(0,r.kt)("p",null,"Press ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"C")," to stop showing those messages\n{% endtab %}"),(0,r.kt)("p",null,'{% tab title="Teku" %}\nIn Teku at first we need to create a file with password used during creation of Validator Keys. In order to do that,\nnavigate to the path, where keys created\non ',(0,r.kt)("a",{parentName:"p",href:"/docs/resources/guides-and-helpers/validator-setup/eth2-validator#generating-validator-keys"},"#generating-validator-keys")," are stored."," "),(0,r.kt)("p",null,"Then on ",(0,r.kt)("em",{parentName:"p"},"keys")," directory level create a separate directory called ",(0,r.kt)("em",{parentName:"p"},"passwords"),". Result should be two directories ",(0,r.kt)("em",{parentName:"p"},"keys"),"\nand ",(0,r.kt)("em",{parentName:"p"},"passwords")," on the same level under ",(0,r.kt)("em",{parentName:"p"},"staking")," main directory."),(0,r.kt)("p",null,"In ",(0,r.kt)("em",{parentName:"p"},"passwords")," directory we need to create txt file which will have exactly the same name as ",(0,r.kt)("em",{parentName:"p"},"keystore")," json file.\nResult should be:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"keys",(0,r.kt)("ol",{parentName:"li"},(0,r.kt)("li",{parentName:"ol"},"keystore.json"))),(0,r.kt)("li",{parentName:"ol"},"passwords",(0,r.kt)("ol",{parentName:"li"},(0,r.kt)("li",{parentName:"ol"},"keystore.txt")))),(0,r.kt)("p",null,"Now, in ",(0,r.kt)("em",{parentName:"p"},"keystore.txt")," user needs to put password used for creation of Validator Keys and save this file."),(0,r.kt)("p",null,"Then You can proceed to creation of Validator service. In order to do that, create systemd file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo nano /etc/systemd/system/tekuvalidator.service\n")),(0,r.kt)("p",null,"Paste the following configuration into the file. Make sure to replace the ",(0,r.kt)("inlineCode",{parentName:"p"},"0x0000000000000000000000000000000000000000"),"\naddress with your own Ethereum address where you want to receive the proceeds from transaction fees (post merge)."),(0,r.kt)("p",null,"Also make sure that You replace ",(0,r.kt)("inlineCode",{parentName:"p"},"/path/to/keystores")," to path, where Validator Keys are stored."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"[Unit]\nDescription=TekuEthereum Client Validator Client\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nUser=tekuvalidator\nGroup=tekuvalidator\nType=simple\nRestart=always\nRestartSec=5\nExecStart=/usr/local/bin/teku-22.8.1/bin/teku validator-client \\\n --beacon-node-api-endpoint=http://127.0.0.1:5051 \\\n --validator-keys=/path/to/keystores/staking/keys/keystore.json:/path/to/keystores/staking/passwords/keystore.txt \\\n --network mainnet\\\n --validators-proposer-default-fee-recipient=0x0000000000000000000000000000000000000000\n\n[Install]\nWantedBy=multi-user.target\n")),(0,r.kt)("p",null,"Reload systemd to reflect the changes and start the service. Check the status to make sure it\u2019s running correctly."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl daemon-reload\nsudo systemctl start tekuvalidator.service\nsudo systemctl status tekuvalidator.service\n")),(0,r.kt)("p",null,"Enable the Teku validator client service to automatically start on reboot."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl enable tekuvalidator.service\n")),(0,r.kt)("p",null,"You can watch the live messages from your Teku validator client logs using this command."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo journalctl -f -u tekuvalidator.service -o cat | ccze -A\n")),(0,r.kt)("p",null,"Press ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"C")," to stop showing those messages\n{% endtab %}\n{% endtabs %}"),(0,r.kt)("h3",{id:"validator-tips-and-tricks"},"Validator Tips and Tricks"),(0,r.kt)("p",null,"Go through ",(0,r.kt)("a",{parentName:"p",href:"https://launchpad.ethereum.org/en/checklist"},"the checklist")," by the Ethereum foundation for some ways to\nimprove security and optimise your validator rewards. For example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Setting\nup ",(0,r.kt)("a",{parentName:"li",href:"https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04"},"a firewall"),"\nand forward ports 30303 (Nethermind P2P) and 9000 (Lighthouse P2P) to prevent malicious external actors accessing your\nnode"),(0,r.kt)("li",{parentName:"ul"},"Ensure the time on your\nnode ",(0,r.kt)("a",{parentName:"li",href:"https://www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-20-04"},"is synced")),(0,r.kt)("li",{parentName:"ul"},"Adding monitoring dashboards\nfor ",(0,r.kt)("a",{parentName:"li",href:"https://docs.nethermind.io/nethermind/guides-and-helpers/deploy-nethermind-with-monitoring-stack"},"Nethermind"),"\nand ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/sigp/lighthouse-metrics"},"Lighthouse")," to view real time metrics of your consensus and execution\nclient"),(0,r.kt)("li",{parentName:"ul"},"Using a VPN to protect the privacy of your validator"),(0,r.kt)("li",{parentName:"ul"},"Add an optional ",(0,r.kt)("inlineCode",{parentName:"li"},"--graffiti")," flag that adds a message to the blocks your validator proposes, publicly viewable on the\nbeacon chain")),(0,r.kt)("h4",{id:"monitoring"},"Monitoring"),(0,r.kt)("p",null,"To maximise your validator rewards, ensure that your node is always running and online. Downloading\nthe ",(0,r.kt)("a",{parentName:"p",href:"https://beaconcha.in/mobile"},"Beacon Chain mobile app")," will allow you to monitor and set up alerts when your\nvalidator is offline or not earning rewards. You can also make an account on\nthe ",(0,r.kt)("a",{parentName:"p",href:"https://beaconcha.in/"},"Beacon Chain explorer")," and set up email alerts."),(0,r.kt)("p",null,"If you receive an alert check your machine is connected to the internet and restart your services:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl restart nethermind.service\nsudo systemctl restart lighthousebeacon.service\nsudo systemctl restart lighthousevalidator.service\n")),(0,r.kt)("h2",{id:"credits"},"Credits"),(0,r.kt)("p",null,"Based on ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/remyroy/ethstaker/blob/main/merge-devnet.md"},"ethstaker\u2019s guide")," to connecting to kiln\ntestnet."))}p.isMDXComponent=!0},1634:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/ScreenShot2022-06-15at9.12.21am-e640269ee4675d39ce45be4891fd7791.png"},1011:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/ScreenShot2022-06-15at9.20.16am-17a84f7e8fc7aa9cfbbde1df5c45676a.png"},7562:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/ScreenShot2022-06-15at9.40.05am-c33b4582a1c26d688dcc661b2201657b.png"}}]); \ No newline at end of file diff --git a/assets/js/252529aa.b5af3c71.js b/assets/js/252529aa.b5af3c71.js new file mode 100644 index 000000000..c55d0c7f2 --- /dev/null +++ b/assets/js/252529aa.b5af3c71.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5548],{7254:e=>{e.exports=JSON.parse('{"title":"Fundamentals","slug":"/category/fundamentals","permalink":"/docs/category/fundamentals","navigation":{"previous":{"title":"System Requirements","permalink":"/docs/getting-started/system-requirements"},"next":{"title":"Running the client","permalink":"/docs/fundamentals/running-nethermind/running-the-client"}}}')}}]); \ No newline at end of file diff --git a/assets/js/29ca8489.c336f7f0.js b/assets/js/29ca8489.c336f7f0.js new file mode 100644 index 000000000..fdf197c16 --- /dev/null +++ b/assets/js/29ca8489.c336f7f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3632],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function d(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),p=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):d(d({},t),e)),a},m=function(e){var t=p(e.components);return n.createElement(o.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,o=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),s=p(a),u=r,k=s["".concat(o,".").concat(u)]||s[u]||c[u]||l;return a?n.createElement(k,d(d({ref:t},m),{},{components:a})):n.createElement(k,d({ref:t},m))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,d=new Array(l);d[0]=u;var i={};for(var o in t)hasOwnProperty.call(t,o)&&(i[o]=t[o]);i.originalType=e,i[s]="string"==typeof e?e:r,d[1]=i;for(var p=2;p<l;p++)d[p]=a[p];return n.createElement.apply(null,d)}return n.createElement.apply(null,a)}u.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>d});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function d(e){let{children:t,hidden:a,className:d}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,d),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(7462),r=a(7294),l=a(6010),d=a(2466),i=a(6550),o=a(1980),p=a(7392),m=a(12);function s(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function c(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??s(a);return function(e){const t=(0,p.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function u(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function k(e){let{queryString:t=!1,groupId:a}=e;const n=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,o._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function b(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=c(e),[d,i]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!u({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[o,p]=k({queryString:a,groupId:n}),[s,b]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,m.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),f=(()=>{const e=o??s;return u({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{f&&i(f)}),[f]);return{selectedValue:d,selectValue:(0,r.useCallback)((e=>{if(!u({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),p(e),b(e)}),[p,b,l]),tabValues:l}}var f=a(2389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){let{className:t,block:a,selectedValue:i,selectValue:o,tabValues:p}=e;const m=[],{blockElementScrollPositionUntilNextRender:s}=(0,d.o5)(),c=e=>{const t=e.currentTarget,a=m.indexOf(t),n=p[a].value;n!==i&&(s(t),o(n))},u=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const a=m.indexOf(e.currentTarget)+1;t=m[a]??m[0];break}case"ArrowLeft":{const a=m.indexOf(e.currentTarget)-1;t=m[a]??m[m.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},p.map((e=>{let{value:t,label:a,attributes:d}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>m.push(e),onKeyDown:u,onClick:c},d,{className:(0,l.Z)("tabs__item",N.tabItem,d?.className,{"tabs__item--active":i===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=b(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",N.tabList)},r.createElement(h,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function v(e){const t=(0,f.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},3368:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>m,contentTitle:()=>o,default:()=>k,frontMatter:()=>i,metadata:()=>p,toc:()=>s});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),d=a(5162);const i={},o="admin",p={unversionedId:"interacting-with-nethermind/json-rpc-api/admin",id:"interacting-with-nethermind/json-rpc-api/admin",title:"admin",description:"admin_addPeer",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/admin.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/admin",permalink:"/docs/interacting-with-nethermind/json-rpc-api/admin",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/admin.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"JSON RPC",permalink:"/docs/interacting-with-nethermind/json-rpc-api/"},next:{title:"clique",permalink:"/docs/interacting-with-nethermind/json-rpc-api/clique"}},m={},s=[{value:"admin_addPeer",id:"admin_addpeer",level:2},{value:"admin_nodeInfo",id:"admin_nodeinfo",level:2},{value:"admin_peers",id:"admin_peers",level:2},{value:"admin_prune",id:"admin_prune",level:2},{value:"admin_removePeer",id:"admin_removepeer",level:2}],c={toc:s},u="wrapper";function k(e){let{components:t,...a}=e;return(0,r.kt)(u,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"admin"},"admin"),(0,r.kt)("h2",{id:"admin_addpeer"},"admin_addPeer"),(0,r.kt)("p",null,"Adds given node. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"admin_addPeer","params":[enode, addToStaticNodes]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"enode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Given node")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"addToStaticNodes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Adding to static nodes if ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," (optional)")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Added node")))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Example Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"admin_addPeer","params":["enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303", true],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Example Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n"jsonrpc": "2.0",\n"result": "enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303",\n"id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/admin#admin-addpeer"},"See also CLI admin.addPeer")),(0,r.kt)("h2",{id:"admin_nodeinfo"},"admin_nodeInfo"),(0,r.kt)("p",null,"Displays relevant information about this node. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"admin_nodeInfo","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"NodeInfo object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Information about this node")))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Example Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"admin_nodeInfo","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Example Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n"jsonrpc": "2.0",\n"result": {\n"enode": "enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303",\n"id": "b70bb308924de8247d73844f80561e488ae731105a6ef46004e4579edd4f378a",\n"ip": "85.221.141.144",\n"listenAddr": "85.221.141.144:30303",\n"name": "Nethermind/v1.10.37-0-068e5c399-20210315/X64-Windows/5.0.3",\n"ports": {\n"discovery": 30303,\n"listener": 30303\n},\n"protocols": {\n"eth": {\n"difficulty": "0x6372ca",\n"genesis": "0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a",\n"head": "0xf266b2639ef7e1db6ee769f7b161ef7eb2d74beb0ab8ffcd270036da04b41cd4",\n"network": "0x5"\n}\n}\n},\n"id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"NodeInfo")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Enode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Id"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Ip"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ListenAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Name"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Ports"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PortsInfo object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Protocols"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PortsInfo")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Discovery"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Listener"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/admin#admin-nodeinfo"},"See also CLI admin.nodeInfo")),(0,r.kt)("h2",{id:"admin_peers"},"admin_peers"),(0,r.kt)("p",null,"Displays a list of connected peers including information about them (",(0,r.kt)("inlineCode",{parentName:"p"},"clientId"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"host"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"port"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"address"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"isBootnode"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"isStatic"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"enode"),"). "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"admin_peers","params":[includeDetails]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"includeDetails"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"},"If true, including ",(0,r.kt)("inlineCode",{parentName:"td"},"clientType"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"ethDetails")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"lastSignal")," (optional)")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PeerInfo object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"List of connected peers including information")))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"admin_peers","params":[true],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n"jsonrpc": "2.0",\n"result": [\n{\n"clientId": "Nethermind/v1.10.33-1-5c4c185e8-20210310/X64-Linux/5.0.2",\n"host": "94.237.54.114",\n"port": 30313,\n"address": "94.237.54.114:30313",\n"isBootnode": false,\n"isTrusted": false,\n"isStatic": false,\n"enode": "enode://46add44b9f13965f7b9875ac6b85f016f341012d84f975377573800a863526f4da19ae2c620ec73d11591fa9510e992ecc03ad0751f53cc02f7c7ed6d55c7291@94.237.54.114:30313",\n"clientType": "Nethermind",\n"ethDetails": "eth65",\n"lastSignal": "03/11/2021 12:33:58"\n},\n\n(...)\n\n],\n"id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"object",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PeerInfo")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ClientId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Host"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Port"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsBootnode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsTrusted"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsStatic"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Enode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ClientType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EthDetails"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LastSignal"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/admin#admin-peers"},"See also CLI admin.peers")),(0,r.kt)("h2",{id:"admin_prune"},"admin_prune"),(0,r.kt)("p",null,"Runs full pruning if enabled. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"admin_prune","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PruningStatus object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"admin_prune","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n"jsonrpc": "2.0",\n"result": "Starting",\n"id": 1\n}\n'))),(0,r.kt)(d.Z,{label:"object",value:"object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PruningStatus")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type")))))),(0,r.kt)("h2",{id:"admin_removepeer"},"admin_removePeer"),(0,r.kt)("p",null,"Removes given node. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"admin_removePeer","params":[enode, removeFromStaticNodes]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"enode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Given node")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"removeFromStaticNodes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Removing from static nodes if ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," (optional)")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Removed node")))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"admin_removePeer","params":["enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303", true],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n"jsonrpc": "2.0",\n"result": "enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303",\n"id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/admin#admin-removepeer"},"See also CLI admin.removePeer")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2b9f830c.a24ebfad.js b/assets/js/2b9f830c.a24ebfad.js new file mode 100644 index 000000000..ccffc6045 --- /dev/null +++ b/assets/js/2b9f830c.a24ebfad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8109],{2533:e=>{e.exports=JSON.parse('{"title":"Nethermind Utilities","slug":"/category/nethermind-utilities","permalink":"/docs/category/nethermind-utilities","navigation":{"previous":{"title":"Web3.py","permalink":"/docs/for-developers/web3.py"},"next":{"title":"CLI","permalink":"/docs/nethermind-utilities/cli/"}}}')}}]); \ No newline at end of file diff --git a/assets/js/30a24c52.9ed5bd5c.js b/assets/js/30a24c52.9ed5bd5c.js new file mode 100644 index 000000000..e748cc79e --- /dev/null +++ b/assets/js/30a24c52.9ed5bd5c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[453],{8605:e=>{e.exports=JSON.parse('{"label":"hello","permalink":"/blog/tags/hello","allTagsPath":"/blog/tags","count":2}')}}]); \ No newline at end of file diff --git a/assets/js/30c152a1.72e9d88d.js b/assets/js/30c152a1.72e9d88d.js new file mode 100644 index 000000000..84bbae419 --- /dev/null +++ b/assets/js/30c152a1.72e9d88d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6161],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},f="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),f=u(r),m=a,d=f["".concat(c,".").concat(m)]||f[m]||s[m]||o;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[f]="string"==typeof e?e:a,i[1]=l;for(var u=2;u<o;u++)i[u]=r[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},3690:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const o={},i="AuRaMerge",l={unversionedId:"fundamentals/configuration/auramerge",id:"fundamentals/configuration/auramerge",title:"AuRaMerge",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/auramerge.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/auramerge",permalink:"/docs/fundamentals/configuration/auramerge",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/auramerge.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Aura",permalink:"/docs/fundamentals/configuration/aura"},next:{title:"Blocks",permalink:"/docs/fundamentals/configuration/blocks"}},c={},u=[],p={toc:u},f="wrapper";function s(e){let{components:t,...r}=e;return(0,a.kt)(f,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"auramerge"},"AuRaMerge"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_AURAMERGECONFIG_ENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines whether the AuRa Merge plugin variant is enabled."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3152febb.4d64c780.js b/assets/js/3152febb.4d64c780.js new file mode 100644 index 000000000..ab3ea3626 --- /dev/null +++ b/assets/js/3152febb.4d64c780.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[225],{3492:t=>{t.exports=JSON.parse('{"title":"Getting Started","slug":"/category/getting-started","permalink":"/docs/category/getting-started","navigation":{"next":{"title":"Installing Nethermind","permalink":"/docs/getting-started/installing-nethermind"}}}')}}]); \ No newline at end of file diff --git a/assets/js/31563212.12e5c5f5.js b/assets/js/31563212.12e5c5f5.js new file mode 100644 index 000000000..287e667a3 --- /dev/null +++ b/assets/js/31563212.12e5c5f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1418],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>c});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function p(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var d=n.createContext({}),o=function(t){var e=n.useContext(d),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},m=function(t){var e=o(t.components);return n.createElement(d.Provider,{value:e},t.children)},k="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},N=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,d=t.parentName,m=p(t,["components","mdxType","originalType","parentName"]),k=o(a),N=r,c=k["".concat(d,".").concat(N)]||k[N]||s[N]||l;return a?n.createElement(c,i(i({ref:e},m),{},{components:a})):n.createElement(c,i({ref:e},m))}));function c(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=N;var p={};for(var d in e)hasOwnProperty.call(e,d)&&(p[d]=e[d]);p.originalType=t,p[k]="string"==typeof t?t:r,i[1]=p;for(var o=2;o<l;o++)i[o]=a[o];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}N.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(t){let{children:e,hidden:a,className:i}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>C});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),p=a(6550),d=a(1980),o=a(7392),m=a(12);function k(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function s(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??k(a);return function(t){const e=(0,o.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function N(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function c(t){let{queryString:e=!1,groupId:a}=t;const n=(0,p.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,d._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function f(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=s(t),[i,p]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!N({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[d,o]=c({queryString:a,groupId:n}),[k,f]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,m.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),u=(()=>{const t=d??k;return N({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{u&&p(u)}),[u]);return{selectedValue:i,selectValue:(0,r.useCallback)((t=>{if(!N({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);p(t),o(t),f(t)}),[o,f,l]),tabValues:l}}var u=a(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(t){let{className:e,block:a,selectedValue:p,selectValue:d,tabValues:o}=t;const m=[],{blockElementScrollPositionUntilNextRender:k}=(0,i.o5)(),s=t=>{const e=t.currentTarget,a=m.indexOf(e),n=o[a].value;n!==p&&(k(e),d(n))},N=t=>{let e=null;switch(t.key){case"Enter":s(t);break;case"ArrowRight":{const a=m.indexOf(t.currentTarget)+1;e=m[a]??m[0];break}case"ArrowLeft":{const a=m.indexOf(t.currentTarget)-1;e=m[a]??m[m.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},o.map((t=>{let{value:e,label:a,attributes:i}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:p===e?0:-1,"aria-selected":p===e,key:e,ref:t=>m.push(t),onKeyDown:N,onClick:s},i,{className:(0,l.Z)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":p===e})}),a??e)})))}function y(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function h(t){const e=f(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",b.tabList)},r.createElement(g,(0,n.Z)({},t,e)),r.createElement(y,(0,n.Z)({},t,e)))}function C(t){const e=(0,u.Z)();return r.createElement(h,(0,n.Z)({key:String(e)},t))}},3628:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>d,default:()=>c,frontMatter:()=>p,metadata:()=>o,toc:()=>k});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const p={},d="parity",o={unversionedId:"interacting-with-nethermind/json-rpc-api/parity",id:"interacting-with-nethermind/json-rpc-api/parity",title:"parity",description:"parity_clearEngineSigner",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/parity.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/parity",permalink:"/docs/interacting-with-nethermind/json-rpc-api/parity",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/parity.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/docs/interacting-with-nethermind/json-rpc-api/net"},next:{title:"personal",permalink:"/docs/interacting-with-nethermind/json-rpc-api/personal"}},m={},k=[{value:"parity_clearEngineSigner",id:"parity_clearenginesigner",level:2},{value:"parity_enode",id:"parity_enode",level:2},{value:"parity_getBlockReceipts",id:"parity_getblockreceipts",level:2},{value:"parity_netPeers",id:"parity_netpeers",level:2},{value:"parity_pendingTransactions",id:"parity_pendingtransactions",level:2},{value:"parity_setEngineSigner",id:"parity_setenginesigner",level:2},{value:"parity_setEngineSignerSecret",id:"parity_setenginesignersecret",level:2}],s={toc:k},N="wrapper";function c(t){let{components:e,...a}=t;return(0,r.kt)(N,(0,n.Z)({},s,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"parity"},"parity"),(0,r.kt)("h2",{id:"parity_clearenginesigner"},"parity_clearEngineSigner"),(0,r.kt)("p",null,"Clears an authority account for signing consensus messages. Blocks will not be sealed. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"parity_clearEngineSigner","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of parity_clearEngineSigner"',title:'"Example',request:!0,of:!0,'parity_clearEngineSigner"':!0},'curl --data \'{"method":"parity_clearEngineSigner","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/parity#parity-clearenginesigner"},"See also CLI parity.clearEngineSigner")),(0,r.kt)("h2",{id:"parity_enode"},"parity_enode"),(0,r.kt)("p",null,"Returns the node enode URI. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"parity_enode","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"parity_enode","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": enode://a9cfa3cb16b537e131b0f141b5ef0c0ab9bf0dbec7799c3fc7bf8a974ff3e74e9b3258951b285dfed07ab395049bcd65fed96116bb92561612682551ec458497@18.193.43.58:30303,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/parity#parity-enode"},"See also CLI parity.enode")),(0,r.kt)("h2",{id:"parity_getblockreceipts"},"parity_getBlockReceipts"),(0,r.kt)("p",null,"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"parity_getBlockReceipts","params":[blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"parity_getBlockReceipts","params":[latest],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"transactionHash":"0x5bea2e9354f63960beaf02942e7c791e61ae47ce6952115afcb3d7fbd5b8043b","transactionIndex":"0x2","blockHash":"0x31fda0834473452ad7df17e351bb540294fe9cf9752472468851f6b3a2c5f5aa","blockNumber":"0x88de36","cumulativeGasUsed":"0x50e46","gasUsed":"0x5208","from":"0xdd078bc60e500d379eaf30fc8658661ea0f2608a","to":"0x5aab44fdc254f247dcb7ad89f248e7da346081d5","contractAddress":null,"logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","type":"0x0"}, (...),\n "id": 1\n}\n'))),(0,r.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CumulativeGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EffectiveGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ContractAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Logs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"LogEntryForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Root"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Status"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"LogEntryForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Removed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Topics"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Keccak[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/parity#parity-getblockreceipts"},"See also CLI parity.getBlockReceipts")),(0,r.kt)("h2",{id:"parity_netpeers"},"parity_netPeers"),(0,r.kt)("p",null,"Returns connected peers. Peers with non-empty protocols have completed handshake. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"parity_netPeers","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityNetPeers object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"parity_netPeers","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityNetPeers")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Active"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Connected"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Max"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Peers"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PeerInfo[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PeerInfo[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Id"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Name"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Caps"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Network"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PeerNetworkInfo object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Protocols"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/parity#parity-netpeers"},"See also CLI parity.netPeers")),(0,r.kt)("h2",{id:"parity_pendingtransactions"},"parity_pendingTransactions"),(0,r.kt)("p",null,"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"parity_pendingTransactions","params":[address]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTransaction object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"parity_pendingTransactions","params":[["0x78467cada5f1883e79fcf0f3ebfa50abeec8c820"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"hash":"0x9372fe18622fd45569ef117644d4cda4af51d11bb3c72fa27690e78c9b0d7808","nonce":"0x11b55","blockHash":null,"blockNumber":null,"transactionIndex":null,"from":"0x89a3fc1d3c68f927be68d3de139980940a89fc80","to":"0x89a3fc1d3c68f927be68d3de139980940a89fc80","value":"0x0","gasPrice":"0x3b9aca08","gas":"0x7530","input":"0x2f47e6a5c13bb151cad6f7297ceb6a197a9be6fdb3acbcfe1df3cad362525932","raw":"0xf88683011b55843b9aca088275309489a3fc1d3c68f927be68d3de139980940a89fc8080a02f47e6a5c13bb151cad6f7297ceb6a197a9be6fdb3acbcfe1df3cad3625259322ba04cfe3030a781f8af08ebe69286a4fab707f00ce4e535c392ba8249527bdae5e5a002203d6802596ff141506437f7ae72b4391b2bdffafba45f8cb561cf5d24b456","creates":null,"publicKey":"0xf409402c0b151206bb98e1031630681df4c046f0c278f920174daa14a34549fa2da52016ca659c0fe254c542fc3034c5a8da9f4d145fec6150db5ed19b4bc7ce","chainId":4,"condition":null,"r":"0x4cfe3030a781f8af08ebe69286a4fab707f00ce4e535c392ba8249527bdae5e5","s":"0x02203d6802596ff141506437f7ae72b4391b2bdffafba45f8cb561cf5d24b456","v":"0x2b","standardV":"0x0"}, (...),\n "id": 1\n}\n'))),(0,r.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityTransaction")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Raw"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Creates"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PublicKey"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PublicKey object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Condition"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StandardV"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PublicKey")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Bytes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PrefixedBytes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/parity#parity-pendingtransactions"},"See also CLI parity.pendingTransactions")),(0,r.kt)("h2",{id:"parity_setenginesigner"},"parity_setEngineSigner"),(0,r.kt)("p",null,"Sets an authority account for signing consensus messages. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"parity_setEngineSigner","params":[address, password]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"password"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"parity_setEngineSigner","params":[address, password],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": true,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/parity#parity-setenginesigner"},"See also CLI parity.setEngineSigner")),(0,r.kt)("h2",{id:"parity_setenginesignersecret"},"parity_setEngineSignerSecret"),(0,r.kt)("p",null,"Sets an authority account for signing consensus messages. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"parity_setEngineSignerSecret","params":[privateKey]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"privateKey"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of parity_setEngineSignerSecret"',title:'"Example',request:!0,of:!0,'parity_setEngineSignerSecret"':!0},'curl --data \'{"method":"parity_setEngineSignerSecret","params":[privateKey],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/parity#parity-setenginesignersecret"},"See also CLI parity.setEngineSignerSecret")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/335505b0.eaea51c3.js b/assets/js/335505b0.eaea51c3.js new file mode 100644 index 000000000..539344aeb --- /dev/null +++ b/assets/js/335505b0.eaea51c3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4641],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});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 i(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={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,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(n),k=r,h=d["".concat(s,".").concat(k)]||d[k]||c[k]||i;return n?a.createElement(h,o(o({ref:t},u),{},{components:n})):a.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=k;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,o[1]=l;for(var p=2;p<i;p++)o[p]=n[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}k.displayName="MDXCreateElement"},9370:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const i={description:"Recipe for a fast and easy terraform deployment of Nethermind Client and Monitoring stack (Grafana/Prometheus/Seq)"},o="Deploy Nethermind with Monitoring stack",l={unversionedId:"resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack",id:"resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack",title:"Deploy Nethermind with Monitoring stack",description:"Recipe for a fast and easy terraform deployment of Nethermind Client and Monitoring stack (Grafana/Prometheus/Seq)",source:"@site/docs/07-resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack.md",sourceDirName:"07-resources/guides-and-helpers",slug:"/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack",permalink:"/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack.md",tags:[],version:"current",frontMatter:{description:"Recipe for a fast and easy terraform deployment of Nethermind Client and Monitoring stack (Grafana/Prometheus/Seq)"},sidebar:"tutorialSidebar",previous:{title:"Firewall Configuration",permalink:"/docs/resources/firewall-configuration"},next:{title:"ETH2 <-> Nethermind",permalink:"/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind"}},s={},p=[{value:"Prerequisites",id:"prerequisites",level:2},{value:":tools: Setting up",id:"tools-setting-up",level:2},{value:"How to get those variables? (skip this part if you know already)",id:"how-to-get-those-variables-skip-this-part-if-you-know-already",level:3},{value:"do_token",id:"do_token",level:4},{value:"pvt_key",id:"pvt_key",level:4},{value:"Running the stack",id:"running-the-stack",level:2},{value:"Exploring the stack",id:"exploring-the-stack",level:2},{value:"Grafana Dashboard",id:"grafana-dashboard",level:3},{value:"Prometheus",id:"prometheus",level:3},{value:"Pushgateway",id:"pushgateway",level:3},{value:"Seq",id:"seq",level:3},{value:"Destroying the stack",id:"destroying-the-stack",level:2}],u={toc:p},d="wrapper";function c(e){let{components:t,...i}=e;return(0,r.kt)(d,(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"deploy-nethermind-with-monitoring-stack"},"Deploy Nethermind with Monitoring stack"),(0,r.kt)("p",null,"Below tutorial will guide you through the Nethermind node deployment together with full monitoring stack which consists\nof:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Grafana with a beautiful, preloaded dashboard to monitor your Nethermind node performance"),(0,r.kt)("li",{parentName:"ul"},"Prometheus/Pushgateway to pull and push metrics generated by Nethermind client"),(0,r.kt)("li",{parentName:"ul"},"Seq to have an easy, queriable view of Nethermind client logs"," ")),(0,r.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,r.kt)("ul",{className:"contains-task-list"},(0,r.kt)("li",{parentName:"ul",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ",(0,r.kt)("a",{parentName:"li",href:"https://www.terraform.io/downloads.html"},"Terraform v0.12.7")," <"," "),(0,r.kt)("li",{parentName:"ul",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Cloud provider (in this tutorial we will be using ",(0,r.kt)("strong",{parentName:"li"},"Digital Ocean"),", the terraform recipe can\nbe configured to use any other provider of your choice UpCloud/AWS/Google etc.)")),(0,r.kt)("h2",{id:"tools-setting-up"},":tools: Setting up"),(0,r.kt)("p",null,"First of all let us download repository with necessary files"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"git clone https://github.com/NethermindEth/terraform-nethermind\n")),(0,r.kt)("p",null,"Let's move to the cloned directory"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"cd terraform-nethermind/\n")),(0,r.kt)("p",null,"Create a ",(0,r.kt)("inlineCode",{parentName:"p"},"terraform.tfvars")," file and add these 2 variables"),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="terraform.tfvars" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'do_token = "Your DigitalOcean token goes here"\npvt_key = "path/to/your/private_ssh_key"\n')),(0,r.kt)("p",null,"{% endtab %}\n{% endtabs %}"),(0,r.kt)("p",null,"Make sure that the ",(0,r.kt)("inlineCode",{parentName:"p"},"public_key")," variable in ",(0,r.kt)("inlineCode",{parentName:"p"},"main.tf")," file points to your Public key path"),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="main.tf" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'resource "digitalocean_ssh_key" "key" {\n name = "SSH Key Example for "\n public_key = file("./private.key.pub")\n}\n')),(0,r.kt)("p",null,"{% endtab %}\n{% endtabs %}"),(0,r.kt)("h3",{id:"how-to-get-those-variables-skip-this-part-if-you-know-already"},"How to get those variables? (",(0,r.kt)("a",{parentName:"h3",href:"/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack#running-the-stack"},"skip this part")," if you know already)"),(0,r.kt)("h4",{id:"do_token"},"do","_","token"),(0,r.kt)("p",null,"Can be generated on DigitalOcean panel. First go to the ",(0,r.kt)("strong",{parentName:"p"},"API")," management (bottom of the left navigation panel)"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(8270).Z,width:"202",height:"169"})),(0,r.kt)("p",null,"Click on the ",(0,r.kt)("inlineCode",{parentName:"p"},"Generate New Token")," button"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(2366).Z,width:"1358",height:"281"})),(0,r.kt)("p",null,"Give it a name and generate"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(5327).Z,width:"568",height:"405"})),(0,r.kt)("p",null,"Copy the token and place in its spot in ",(0,r.kt)("inlineCode",{parentName:"p"},"terraform.tfvars")," file"),(0,r.kt)("h4",{id:"pvt_key"},"pvt","_","key"),(0,r.kt)("p",null,"Generate ssh key, we will be using ",(0,r.kt)("strong",{parentName:"p"},"ed25519")," algorithm in our example"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"ssh-keygen -t ed25519 -a 100 -f private.key\n")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"pvt_key")," variable will now look like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'pvt_key = "./private.key"\n')),(0,r.kt)("h2",{id:"running-the-stack"},"Running the stack"),(0,r.kt)("p",null,"Confirm that terraform can be initialized, run this command from within terraform-templates directory"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"terraform init\n")),(0,r.kt)("p",null,"You should see a green light in your console"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(9056).Z,width:"597",height:"149"})),(0,r.kt)("p",null,"Let's preview our plan before applying and save it so that it can be used in a future"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"terraform plan -out myplan\n")),(0,r.kt)("p",null,"You can now provide some basic configuration to your VM/Nethermind Node"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(2103).Z,width:"585",height:"418"})),(0,r.kt)("p",null,"A list of available ",(0,r.kt)("inlineCode",{parentName:"p"},"configs")," can be found ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/networks"},"here")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},":fire","_","extinguisher: If you chose to enable JsonRpc (it will run on port ",(0,r.kt)("inlineCode",{parentName:"p"},"8545")," by default) make sure that you set\nup ",(0,r.kt)("a",{parentName:"p",href:"/docs/resources/firewall-configuration"},"Firewall rules")," either in DigitalOcean or by using Linux ",(0,r.kt)("inlineCode",{parentName:"p"},"iptables"))),(0,r.kt)("p",null,"Let's apply our plan and start deploying whole stack (it should take no longer than 3 minutes)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"terraform apply myplan\n")),(0,r.kt)("p",null,"Wait until terraform is done deploying and if everything went smooth you should see"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(8715).Z,width:"678",height:"55"})),(0,r.kt)("h2",{id:"exploring-the-stack"},"Exploring the stack"),(0,r.kt)("p",null,"Grab the IP of your new Droplet from the DigitalOcean panel"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(9703).Z,width:"1287",height:"205"})),(0,r.kt)("h3",{id:"grafana-dashboard"},"Grafana Dashboard"),(0,r.kt)("p",null,"Go to the ",(0,r.kt)("inlineCode",{parentName:"p"},"YOUR_DROPLET_IP:3000")),(0,r.kt)("p",null,"Login to Grafana with ",(0,r.kt)("inlineCode",{parentName:"p"},"admin:admin")," credentials and change the password if you wish"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(9885).Z,width:"652",height:"620"})),(0,r.kt)("p",null,"Go to ",(0,r.kt)("inlineCode",{parentName:"p"},"YOUR_DROPLET_IP:3000/dashboards")," endpoint"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(2698).Z,width:"997",height:"414"})),(0,r.kt)("p",null,"Click on the ",(0,r.kt)("strong",{parentName:"p"},"Nethermind")," Dashboard and you should see charts with Nethermind metrics"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(9646).Z,width:"1833",height:"965"})),(0,r.kt)("h3",{id:"prometheus"},"Prometheus"),(0,r.kt)("p",null,"Go to the ",(0,r.kt)("inlineCode",{parentName:"p"},"YOUR_DROPLET_IP:9090")),(0,r.kt)("p",null,"Explore Nethermind metrics, visualize and analyse using prometheus syntax, a list of available metrics with their\ndescriptions can be found here:"),(0,r.kt)("p",null,'{% content-ref url="../ethereum-client/metrics/" %}\n',(0,r.kt)("a",{parentName:"p",href:"/docs/monitoring/metrics-explanation/"},"metrics"),"\n{% endcontent-ref %}"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(6669).Z,width:"1694",height:"849"})),(0,r.kt)("h3",{id:"pushgateway"},"Pushgateway"),(0,r.kt)("p",null,"Go to the ",(0,r.kt)("inlineCode",{parentName:"p"},"YOUR_DROPLET_IP:9091")," and verify if metrics are inflowing"),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(2845).Z,width:"900",height:"679"})),(0,r.kt)("h3",{id:"seq"},"Seq"),(0,r.kt)("p",null,"Go to the ",(0,r.kt)("inlineCode",{parentName:"p"},"YOUR_DROPLET_IP:5341"),", you will be albe to query your Nethermind client logs. Feel free to create some\nuseful ",(0,r.kt)("inlineCode",{parentName:"p"},"Signals, Queries")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"Dashboards.")),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(1371).Z,width:"1842",height:"718"})),(0,r.kt)("h2",{id:"destroying-the-stack"},"Destroying the stack"),(0,r.kt)("p",null,"Use below command to destroy your terraform stack (We will need to provide variables, can be random, once again as we\nhaven't set any default values for them. Hopefully it will change in the future.)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"terraform destroy --auto-approve\n")))}c.isMDXComponent=!0},1371:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)-c9b49618aaf2f51030bdec0769a57ceb.png"},2698:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(40)-24f70da3a03116753afec64d65e74337.png"},9885:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(41)-e6e63f8d188704efcde4649de2b5d710.png"},5327:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(42)-86a8200b2e08d00ce1813db4c87d6bee.png"},8270:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMoAAACpCAIAAADlZzULAAAO70lEQVR4Ae2df0xT5xrH+4eJxMSERG4kpApYoYrTocGRGt0qGLi2w0HRoqXF2tYBQQu3lRogZmrK3QQx2HBxf3QmI9Fw44954zWL5qJZDNxJpmGJwexKMCGLvWYDvANXO5ecm3NOTzkICpPzlLZ+TRPL6ek57/mcz/t9n/elVtmqP62SybV4gIDkBBiGka1KWC35cXFAEJDJtaxeygSkF8KbhAD0IsGK6OIJ8IMj0guSkRBAepFgRXqJ0gszR0ycaQhgcER6ERLA4EgIF0Mk0gt6ERLg00uJfgYCFASC6aUqdOIBApITQO1FODRQ5EF0HRN6QS9CAtCLEG50JQ1Fa4O1F8WhcUwQgF5IL0ICGBwJ4SK9oBf0IiQAvQjhIr2gF/QiJAC9COEivVi9VuGz9jSfdoJeSC+kFyEBLr3waVWkFw0BpBdh38XgCL2gFyEB6EUIF+kFvaAXIQHoRQgX6QW9oBchAehFCBfpxeqVnoB/KQTJSAhALxKsyC2eAPSCXoQEoBchXGQY9IJehAR4vdLRz0CAgoCE6bUnq9xjdbUWbNs5uaEFi987qC5z66tbzTXNhaUORUaBaAfd0m2uPMsJg6PVZP9UU1S+ZIWoMylKM4qOFttbzbWtpsrj6nzzouXCq8v3ZFV4zLttC0K/6k+2qB0e/Y5S/uBJO1ustc1bsguFcxUqjR6r7eBiuVb2Tk1xrcfqmvQoLtgj7CmcInTkt+dJauHCZCkvXzq9Mh362ubiypbgLRRuSXzuUZPLY9pfl51XmZF3KK+y1Vp9NCODvwadoqTZ6motNjgyt1auLWgodnjMtpol/BUqzFsqW62OT3N3HMzIrcoucZtcHoOhnPVDrpXNRi+Xx3qgLkXBn0ukV2pJ0iZbyiZbVlmL1XE8a7MtZZNl2TshEaXkG03KrijL3t9q3u9IEvdw4T6+2YVIpVdBUlGzterQsk11ptpPs9YKdyitPM/hMRkrF4dSR1Gm3Fq2iBNoQXadwdVakL8nlEAL3rVlZO/kfixYWnjC6nRnvTsRdYtZU1tyN3EezEYvZ4vJ4TGUWBaxjER6CciWFjVbq+uWhdombH8zlNH9rhWlWZYWg+Fg5u4TJkvNUokMk0ivVLO6mhuYQk+4W7Xw/SPm2hPZmYJtk+5fwbJdLezdnTaNl5dmV3rMpeULxW9JNm+xe0wlFta/2eh1wKXMPWqqbc7drINer7M/dU/mvhaDsTI+WStbvlNpaDbtO7gkddq79sc28nrN9ZuhF25qMAU14qQ5cCiJk2ZxvttaezQjbdo2FSrLPNb9NfFigULPky3qGo+hqGwylJLM/R7r3krWudnplZS8U2lssVY3KNKRXtPeBa0sec/ashbT3qpgTSLXypJLMozNhjLRltB9+YNPJNGrUFnaaq10LOFGmQXZdabaZnU2O6gRppecnUmYS8tDA6ss2Zbr9IQqdLa0P+BKWq6VpZfnVXtMpVWZZUJpLzDC4CiT61JKmtnR8KWsSt6zdm+LocTG1RWv8FLAODkCJu0sxeCYXqlxTpqFWV0e024LmzHpXO1VWj5Re60oVbxfxk8AF6q42itPVHuttSnfe3XttVVUe7G1VKv1gGuZwGXBRpfe1arZquOvdkIvuXbRlgZTbavZAb0m3XsOVEH8e5ZJs/WQNKklyzaWTPTe0PY/8kSC9Fqcd9xaeyJ3GzsX4x/cjOyIgpuyBWeOtrqs3HLlNgc7c6w5ujY0c9zNzRx3O9aqyzM0dYU1HvP+mqXBmaNlS6WHnTkWVGWoq7J2uU21HkOpMHOUazk7PSaLK3NreUa+q8DusdobhHmiVqyXTK5TsCeCXlP1ot0y9/Ti6qHymiUiqRdsdBkmgqRgcXaNeq9o3eudicmgbLkuKc+VZzthcrSa2XWvykk9Ka00o5hd97Ly615/Nk+kIHu6gvjNjrzyZnOtx+poLjYeUoiOPFkvrSzNprZDL1qZpo6Sc9cr3C2eeg3YErEEoBe6ByEB6EUIN2JDJWwNg17Qi5AA9CKEG7aQiNgTQS/oRUiA1wuf9yJEHLHREoaGIb0gFiEB6EUINwzxEOGngF7Qi5AA9CKEG+HREobm8XrN9fNeYWgoThGNBJBeSC9CAtCLEG405o20bYZe0IuQAK8XllUJEUubB9F1NKQXxCIkAL0I4UZX0lC0FnpBL0IC0IsQLkUeRNcxeb1Q2kMyEgLQiwRrdGUMXWuhF/QiJAC9COHSpUK0HBl6QS9CAqxeaQko7QkRR0vSULQTekEsQgIYHAnhUuRBdB0TekEvQgIS6aWoMJzpvvdoxO9n/MO+ezevOw2WmftZij5xszE++NW62rh1ltQNRcF3bah3nunQqAivfObmib7zBzu/GQFJai+j4coI83TA627SmBoNRzrbbvr8/qGTOwRXXnWfVN4e/5BbwztUpOkc8X/dFMfvrOnoeTLUZpjpCK86MrZHBgE+veb2P6KtOX3Nz/R8Jo4r/Xq9M3HGK3yNXjO+FztEAwGJ9BpnBjsbX+VTXH7TyRsDg08Cfv/Y4J3rVTq9TK6Nd/UyoT//vnT2UegHHxtaIvPiqnv9j69b93Wcu+sb9QdGh/q9VRVCVutVR653PRwZHR/pv3OrYV/7pfER7z4u8zbUN3w9MDjMnbSv222zBHMxGu6KcHVRXxtIUnvpNWeH/Awz+rDPe8ar002+ker2a0/Ges6eVm3Wx62r0Li7B4f7G/K1MoU+Pr+jxz900mCMX1MUt8ZouDjiv9meuE4fl6J9WS//2OA3V6sqnKtz66uu+pjhWzquYkt19I6+GOk605STb8+p8nq7ff4XvF5Fuisjo90dORuL4pQWVfXlSxfbV6dE/d2KOu0k0Usrk+tXV3R4bw74xtkQ8j/qa3PYubQoyjnn83e3p05khl53ccTX+Qn7qiiiZPLJtZfoJTa9ntzSKQU5dlzu9w80qLWylAp3X8B3pXHiq8vXtXcF08vo7A4MXmxMhFIT5AWAYdwilV5C0xXG9RVe750Rhhk5V6GXyY3OOwwzPuZ7MjLxeMowdztY4UQOzaDX4+saYYIpU3fc8w+4c7UyZdOl8bFL1aLyn90SHBwTbVfvDQf8jwe6rlxtqHbCs3lJPqn14nuGor7tETN6pTFOrrfeDHBPBP/EXUcSvaqm14ulqbTkVLW7z/X2DwdG73SsDwkqbgOeUxKQQi+F3epuWi2+eYr6tiGGHwFXu/v9T7oNGwj0SrG77wd8F8WD4+lrQnpN6qy5nffYhZLp2kAJd1Ib3soTsXrN8VfacTs6740zow+6Tx5r0uidObbT7hvcupeOy5U1n7Q9DIzeuWzQGOPXWVQVHZf6uqv49dJ17V3+sWt19vWainh5Uc5Zn//B5Zxc53rVpHGTnzlOMzjKtamu3lH/yLXWxvXqCpWtve0bobRPqXDeHLjU3KRS6+MURtWxXt/TXuu0ir+Vdz1s3kugl0yujVM3Nlzs63885n/B+Pk1AoNx4hpUnzRc6Wdf9Qd8D/u8R5xCMW7UnRsY9TOjD65qlNo4jffaUIDxj1w7UiEuy16jl0yuVx271fNwhD3y/e6GfV42vUys1okG77k7vtFxhmFf6nXbxMtyiLEwEZBGrwmT5jcM2Kp/yJ0fJnaRctXzy/y1Z+f1SotSUonVt3pudOrU+riUokRNU9vdMX9fx3osRrz2lofzXkd5eq2xW8/1DQ4HmBeB0SdDXZ3enI2IrggiEOV6RUw3DWckRNG5oFcE9fUo8maWTWX1Ssdn7ZGCNASgF9KLkAAGR0K4sxxBYng36AW9CAlAL0K4MRxLs7w0Xq9oXVad5UVit/kiAL2QXoQEMDgSwp2vzIic8wbTa8N2Ox4gIDmBYHpJflwcEAQ2bLcjvRDbhASgFyFcBBj0gl6EBKAXIVykF/SCXoQEoBchXKQXr1c6QIAABQFWr/QE6IUMIyEAvUiwUiRBNB4TtRf0IiQgae1l7xr8nfsWuMDg3z4WNfqjL7vGQt8Ox+/w7Mf7PZ8dOsz2yOCrv90+5YzGDoo2v4YAq9fKhLTX7DHrl5zl//g5JNGD800TbwzpFfjtOfsQ9hr74bOPoZeoH8bcBwukq710n3/1E8Mwz3q/HXzOMMxQl/lDAdyUfMo7fP37X1nJBi80Ib0m+mFM6iVJen3w1+9+YRjm6XeHrOdvs+r8/Pd6YbCboteG7cdO3Wf1+uXWF6ppXhW8jDncMWzStJcmVWl/+Hj3M4ZhfvrXF6rth49/yz2/8bmK92OKQB8cuv49V40NXjiF9Jr2xsTGRolqL9OFXjax/vfVETaxPmju45Ksr34Xl0NBvRgm8NvzX9lHsPga++EUaq+YTmhp0qvAy9Vb/+0p/4jzadeXXU/ZOuz2KfHcUKjoGYYJPPvx/nenDotfxcwxBksCKdLrw0bvfwR1fmcY/sFteH73Qt6MSw9Ths7YGBdwFRJ9WvUvwnKX4NjE34HBU9aZlh6gV+yOj3NPL2f5P7nlruEeu04U7yXnb3PF+4PzjTMU79ArtvVKm8uyanC5i/kpNE8Mwjpcz80lmUddBh2/av+K6gp6xbZekqx7odQAgakE5j44igbE2O2FU8Fhy2wISLMwMZszYZ+3kACfXivfwivHJYeBAPTC4E5IAHoRwg1DPET4KXi9JPm8F+4TCLxMAHq9TCTC8yC6mge9oBchAVavOa3aY60LBF5NgNcLCxOEPTi6hjNpW4v0gliEBJBehHClTYJoPFpQr8j5sle0JJYIsHqtTFgZS5eEa4kcAtALXzxOSAB6EcKNnBSZr5bweuE/fYFkJASQXiRY5ystIu280At6ERKAXoRwIy1Lwt8e6AW9CAlAL0K44U+LSDsjq1callXlkIyEANKLBGukpch8tQd6QS9CAtCLEO58ZUbknBd6QS9CAtCLEG7kpMh8tQR6QS9CAtCLEO58ZUbknBd6QS9CAtCLEG7kpMh8tQR6QS9CAtCLEO58ZUbknBd6QS9CAqxeigRF5PiOlsQSAaQXYd+NJVHe7FqgF/QiJAC9COG+WY+PpXdBL+hFSAB6EcKNpRx6s2th9cLM8c3Y4V0zEoBeSC9CAtCLEO6MnTvmd4Be0IuQAMMw/weCUhQWVCdO+AAAAABJRU5ErkJggg=="},2366:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(47)-c0ea255942059467dc54ab9fe90ba5b9.png"},9646:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(48)-ec5d67bdc210fdcabe4ebba56d329b8d.png"},2845:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2)-7508822115952af46849c50e765d6a28.png"},9056:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(50)-1eb7d4161b9549003f13002394103636.png"},6669:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(51)-a507d652dffbf56997e624985c12b5df.png"},9703:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(52)-fb378f0035d75b9f148b207273baf948.png"},8715:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqYAAAA3CAIAAABRvB8HAAAePUlEQVR4Ae1dX2sby5K/n6Sl0eRB4SwKe3TyIAjOWeITkC8WCatzgzBEe4JigjGIYDBE4KuQtXCQCUeQ1UNWkNVD9BD0kIHFA9dzWDIPnvvgefE3Wqp6ZjQzXSONbMuWfWoI8ajV3VX16+qq7uo/+ouY/uiVrmV0VnUh9NW24dq9qh4UqHStcavkf9SfvP/HH//1H/d1/f7G70fu//3+t6ScWKLUGtuDet4vLVbbhtmtQBG91Bw5zjD4Tq/2bcmCl3m1bdjD5oou9JWtoW12VmWFzZFtdKtFYLVUrQLLUKk12FoFKnpxtVaFN5pQuWsarRWsqLA1svu1CfMBi/iSBIhe7VnjZjGcmeJTr/Rs1+rXi7oo1vqWNcGTElNhHquPQydprrZG5qglsYAUUiIKELrOeYorsucbQ7NbEZA+qOtipW2Mm4GiRNWG5DMJZClp9P8S0e6QQ8FTFotRJwEhZYfiJPL5+tABKYOn2BjaRqdS0POVjmEPt0JKodcHzrAx0fqgTOwlXx/Yo61COFUBmVTvBOQpVcTKFYlIQMJ8BO9kTr3cMcx+rSAK1Z5pdMooKplTJDWcEIXGMGIbgGRcvQM2+IURYATmQOAvM/MWKu2hYRrj8bA/NKXL16td07Is23Fdx7Isayw9TeHf/z76xz//aR/99/7v4z9+fwLOl84JRIu1nmHZdlC6WOuOTdMYj0aDTm8ccvng2Qem4ziO2Skju/rqVt+wHcexjUETHTomF6vtoUw2h010+UIv1TpDE7Na40ETLRBJKNHKq/gQgKCHUVy+IPjUKz3LGHSRJ2vUroasuiomwbwUNAYdJpY7lmt5AEECLREFCFnnPMUVb0Q7HloZaEI0yMip8h/R7pAnhidNndQQmiWoM660kKa4fMjWHVuO41jjbi3k8IVI6/LB61n9WnhsoIAMIioaQiMPA3ayyxASqXUqgHsJas58uWNY4PDhKVR7ltmt4Hhb4RNzJDVcrW+NwgMlyBxXb6yA/2MEGIE5EZjt8uesELP/29+N//3Pv2rnKXrLy4DLD4VGbrm0fwrxCJefKHdqly/ytb45iPj8xEpv2RcoeT00Fr5l8rE4jMB1InCZLv/++t8e/osQ4u5f3xl/hOP61yngktFml79kDXJxdvRa37It0+jNcNB6rWeYlm31gyWr6bRXWuPRZDlket5b9G2pORq3ZYzuFknFojACS4LAZbr8hzv/c2TDczT8+5N/XRIBz89GrdWOP636+auTJdnlXxRBLs8IMAKMACNwTgQu0+WfkwUuxggwAowAI8AIMAKLR+AiLl/PFwqF8A6jRHbT50ysgr+4LQhcrzJcL/Wb0oaM0k1pqevikzXkupC/KN0LuPxic+y6Vlduop/KR/qcU6vhL28DAterDNdL/aa0H6N0U1rquvhkDbku5C9Mdw6Xv9I2XNc/vA4Hli7i8gtbI9e1e3gQP1GIlZbhysc/npeY9Tq+iANyXh7mFDMVdHPyotSp1weu6yRfTzBn/aHs6dUGC50D5Gl4zkk9xDccO6OUFm9aAC11+v6dFXqp3htbjutY416j5J3Y16s9G5U5crdFlMDUT4VKqw+1uo5l9LyDcFMLpPiSlGierp2CxiKyTGtigl6CmETOeZJKjYEBB5VDVvGyCRXg3DGchnZsc9RrrIRuf4hxSuYkE2MFZ3wk1BtKJPejWR1W8gSwWd2KT1xfaWCPcR1r1K17XYZMTF8cjuk2uiNTojdo4MUgZJ2C6LB6uTUyLQe6m20MgtPUF+7FvsTX9/cCLv9CTKfqG/mVar3RHFiue6td/pxipoJuzsZR6lycy5+Ts1kWhKhuTjyJGhKSFJQgH9pEu99YKRU8g1xqjh3XMYe9oem4TnAJkV4ordT7VvQ6qwRKajLcTwXefjwYDA1r7F0bpeabL4WUaL4qriX3nE28EDFLMOWxR51GvV5d8dY3L5vQSmtkDLqtZrMzMB3XNdqTq7ZiuJM5ycRYwRkfVfWeUWBWhy01R6YxMqywy5dQjrvNZmdk+12GTIQLnNIVF/lqD4iMeu1Wu9vvbcFFa0l1qh1Wr3ZGg1630+kODNt1bX88f7FePAO7K/l6psvPl1tDEy696Xf6pj+eRc3GKUsosK+XGj24CcccdvuGH/IncuYbQywa/CcvrStUO3JAC3atvxUc0ym1xnGXny83cXyNV/HIC77w6hU5pnMcC27oQfubLzf7Bsy3bHPY8W5FoQhJDzfu4w0/ln+RD9kCJCBwx4rruqNuB828LU0ywWcJAhfmoId3C1nDVsA9LWaM+QToKD4TJFIBoeuUxYfd7th2nAkganEAXpF9tWO6xmho2uag2xvbjj1qQocjlEEWduLI0yBTck7G8uF2x4vyYmpDUReCkIiCjkYJGJI2MRSvwgkQTuXheIbrBj4f70dSXL5eWCmXyyv+eIGWUZQ7puvaA++4er4gs6vIw9VA6XQ+QaJElOI9jkIpgXm6jdTeQavNYroMhRLJfqK5COyXtIoJeJLNQXQZknYoMV8fui7e8kijNMk6yTlJg/uivOJ4oVRnZELICcxi6MLOUP7gVVFvshcLqsPmC8XoM9n4hWAFs3y4rcIP+Za7luvCRUxkosdWiuIiD5Wa3XI+Xyjk/UgbRUhGLBI6LFx3tTV03Mh9rMDjeWN1AbDX9jLL5csImjXq9UYW6LgM7OulSqPRhCHAxOUXG0MHB1VdHJB63xA5J0nOqNNoNBpVjFfhiLTT2mps9caObHVERfGF+Vofhl2jXqcLPNnyti+90jVdmFt12+3uYNyDw8+F2sB2XXPYbrZ642D0SBGSttMZdxpbIFUwplPbhQbE68OuPe61Go2tdruxApepqHyi/XKdcXdrqwNiGm15yy/c5Rp1URTzCdCpXPp+OCZR+jo9QMxhtzcKBrlU8cDlh2UHq+SMu90RzHJ73ZEt9WbC/kRtSOQTQCblJNod8il4Coo6KRHF0qRwRGkpl18BozVuVevNerUVW74ijAWOECLjAkJMdMThGyllHslpGPn0Op8g0SR50kakJlMoEZxDEtU3qTpptVlElyHbneaeMheiWGk0WhB+tIdttGD5kHqFNSSBENFwNHU/NS9Hj3C/OY2Sn1GEcgZpkUR04o7R26rVG81OvzV9cVV1+ZSGUB0Wp/uhcZHrmkGQIuaza33Hdcft1Xx+pQVWEW4R1alET6IUxcVqG9yTAVN017WNDlx0SteZ2GExJgArEKN2NXyJJtGLJ1Av/dsMly9NDd6Fn68NwEVNIorR5RwcVDnDBgCL6jmxGNTCD1YcWcvXdRyK6bpegDBAMIqK224d+JCE5EjOAfZQMycOFHH3WSrm8/lCFQ0xXIJPEcIuKE0qKoBy36ffkEmAyD4cvleP5hPtlxxRyGUhn1JczATm/blyBDqfufBfSqI56pTyQHNKZIHNpOKq7DgRaa/CrzKYnTLYg4k2RNXGm+XjLyoEyCeBLMqt4Vg+o7Z39zL8ZkGs3RGGOJ4eNlHqtEQUdFhcVVrC5XvN2mmPrFG7Mwqv8cMtyMr8IJXLR2mCLhG0s4o8LRGp81ALKVF8pZbW5ESUAu78F6pvknXSarOALpOAks9w5C9lLjCDp2GRUHsczyRCasNFaMY/FGFByPF+soBGySsSyelXE02UCmoOWvVKyZ/++jnVv6rLxzzRfkR22HypXI0+lZJ/vivqs70YvBwewPK5BUEzGZiPJUoG0xRHawILL1tbsFogxxtUnckdNl9pdnv9keW41qAR8vlEL1aBW9qUGS4fu5u3kI7DpkSXX4StTV6oBjvDxMincvl5uAQcNid5T7B1LG67PULS4mO8ExYGvMBV5Ndw/EGaX6WcRZOEpP3C3WrQnhhZItssCRBZwSBEn+YzqbwyK6WZB57iZoXk03OlUYnmqJMCJKm4KrtnlcDXm+3VldbY1wx14w9JCFc/5O8FhLVOdk5sTn+vHNXuCEhcbTyUoqaKlohiCYuTyCs2UU4a8BeWUAfCo7PzGgtpUyc/NeVJoyJPS0TqPNRBShR3+bQmJ6Lk8Tb5Q7URWSetNgvoMjRKE45Db4nQ+T12qstPIqQ2XIhk7DVf6RqOa/b9X2ugUYJC8ZxYkZqIm9XkVlLXHk3WFmN05UdFvWVyrB9RHVbPF0vRpxiMMGI+GzSxXG+2Ws16pTkEOy1RJRNBUJgUBusCwJGaE2CCPPBLLzgv8H7OSs05rcNC3VIBgwgFOXCXqNyI/2e4fGkScOuCtLeJLt8fz+YxjoebM4Lje1H9QFzitqaAywLmoFmrlKvtcWi3OPaa0PjBmx/graWSKM7ycT90iDupGBAPaFUr/lMu5WlCqe1XEiBqH6b5RPXBuIQX+A9m+bHzD3kAJM48CZ3Us/iSMCXRHHXOU1yVPdkqxd0JOTRJApnoUYpW+nniauOlR1WRBoSSHYvHlRYTFZuIJBKWBgmXH284X4Do3+havh5ey3fCA01SIlrngQApUbyNaE1ORCnKOMRBiL5J1kmrzQK6DImSwjcClGiXUrn8JEJqlyGpw88hQaTbGgQHP2Rg34CBdHQ8TeQki/uE4KdFYW1RGiM/VfmrqLfMEe1HZIdNH9gPEcX1njhLSqLq8r0qQjk91YZTNKiAkW4ipPWVhMgO6wV3oN7I8BQSiF4cEmHZX2e4fIGLNLAi3MClZxnYz6/WGt5aPuxYbTTq5SIAAyGZYafdN+QRjLIQZE7ARK6qmIPWllzLl1Zp3C4Xi+UWxGGCWb5cULCG7a1Go7Za8BrLtUbdtlzLl3ua4PdWYS1/0Gm3O31vLb8+sDGp2Wy2Or3huFOBVQNcN4oSSm+/SEC8pfOoVsnVyhifaL9wy0NvCJsjgj24ipgFgnnUpjh0UsVQb0NLwqRE6eucp7hqv2jbTSoDSSgBZKozUe0O+RQ8SeokICRLUCeJvGoTIzv23fBiD2Us4g1HCSn3Gqs79lXkBSURrfOkRCRKpCYnoqQKQLURVSetNovoMhRKKt8wJiLNBWalAvuKhiQQIhqOIi+Bc61Rv4dPd6us41q+4vLJnGSiEOXWoNfeatRqjS66/Km/DaGoN6khVIfNlyq16FOBgw0r9U4PouW48arX67YqBSFWWoMh7Kzvj20I61dxAYBOTF0cHZJj9DudgQGzJ/xtRrJOosPq1Z5pwpb9Lp67ce3wT1zdbpePWzFhyzvuMvfW8jHYOgmX43Y33JXbN2zcbz/wd+zTOUG7cYunPNWKO/bzq7ALHzaRjvtQPHD5Ql9tyg2BclsHlp3s2G+V/d/cmhy5tIMfzy2Um95ZZscy4cQnjEIIQnPYL2A8Dgjp8nHvdLDP2eMT7ZfZ7+DZhvCOfUJMgnm0C3HoMDHuORIkSlvnPMVV+0XbblIZaEI0yJRVRL3zzvRO2h38c0xtSOoQEVQ0hGaJUlpIU2wibPKVp4wd24idpSaMRbzhaCHB+1Raculrci5fRR5jnIpEpM4jobguJaAU3l3vaXIySoQEVN9U66TVZjFdhmh3gu8Ec4E5KZevmDVSwRLMhUofMQ4bWghOkyiROclEIVYa/TGcVscznzEFVXhQ1JvWkNQdVoZ8QjLhgZZio48cRW4foBLnKA6n7buwEA8uCU0/zNgpQlSHDYNkDHBcEmBD9OLgu+V/mTXLP5cEoJST+eu5qrithaT9Cq0L3VZB/zRyKTZxmuQ321hMk2xx33GXWRy2s2ueS71nV3crctzsXnyJLr/UHIz7nXarDQfiIDrjHYa8Fa18WUKw/bosJJelHrSJMGtRN9RHWAzmJzPyRQrxB2L3FINyhQikVe8rZOk6Sd2CXnyJLr9Q6xn+DYXDNqzQ3OwH7taJP4OLisQu/6IILl15uI8Ln6J/BIlmUS/KfMEtfXQ2To0hwF0mBsjVfkyr3lfL1bVRu/m9+BJd/rW1woIIF6Uhj/wfOpy5IKpcLSPACDACjAAjsBgE2OUvBleulRFgBBgBRoARWDIE2OUvWYMwO4wAI8AIMAKMwGIQYJe/GFy5VkaAEWAEGAFGYMkQYJe/ZA3C7DACjAAjwAgwAotBgF3+YnDlWhkBRoARYAQYgSVDgF3+kjUIs8MIMAKMACPACCwGAXb5i8GVa2UEGAFGgBFgBJYMAXb5S9YgzA4jwAgwAowAI7AYBNjlLwZXrpURYAQYAUaAEVgyBNjlL1mDMDuMACPACDACjMBiEGCXvxhcuVZGgBFgBBgBRmDJEGCXv2QNwuwwAowAI8AIMAKLQYBd/mJw5VoZAUaAEWAEGIElQ4Bd/pI1CLPDCDACjAAjwAgsBgF2+YvBlWtlBBgBRoARYASWDAF2+UvWIMwOI8AIMAKMACOwGATY5S8GV66VEWAEGAFGgBFYMgTSuHwt82lfPzvMfX40N/N7b/SzQ/h3/Dwzd+HFFJiPpXzm66F+8iKjp2DmyYvc2b72ZGpOyIOAnB3kjneyv92bmvvGfll4kP3yJndyoJ/u576+yDzUzi/Juzf62Zvsw2gFZGI0i/cpfc5w8dJj7dvb3NlB7tvLTGlO5vVH2tlh7tPP4foW/n5lYp6PkJinH10KWOfk81JocyWMwPIikMbll7LfD3PHe/r3dJ4vLOzDB5nNp9r3ZXL587E0j6lK7fJzX19kP7zKnRzqp83MT2G8bsv7w6fa0XZ2bz37fjt3eqgfPTu/YKTtJhNJGulzTor/kP12oJ/uaR+B+dy3p5Nv0rzdGJd/LjHPg6cQ7PLTaA7nYQQWj0AKl//wWe5sL/v6eS6YbJWe5mDS/0I7PsidvtX2SsAnmQhf3Mt+i7p8sBpvs09w8rT2HKp692OipPq9zIed3AkQyn1eF3K2vbauHe3DJOzoVXbtDpR9v5c7amrH+7nPz7Vv+7mTHZgXpmdJCLH2VDvCid1xM7vxA9S52fRCFN68fDcr3bOaU3Kf2uVrr7H+93uAwxoWJuvceA4SnR3mTt5oe/clEaHK/tM6TCs/lISQ8ZjtzF3M+9t27uxQ+7CBzbSv7SHINJ6K7EIIkroQovBjZu2+KKSc+2qZL4f66XZymCSfed/MfUcxv+9q21ITtMzedu70IHf0MvspmOWTiVTDiYScHoKz/kg8Pz4APD++1c92s6jgdDEVT+nyv7zIftuH3vFaSkSJKXN+ewXKPMkpxOZLUPjjJso+RUOuTMwEQimVNqkfkfqpqneSuSCoJ/BJtxynMgJ/RgRSuPztndzpdqbwSDs91LbRV6Er1U93s9trMB+SQwEyESBVXD6MIQ5z79GHQX/ey/6SBL2W+bCnnx3kvrzIvnuufXsJzuzuz9rJoX6yk33/AuIHJ68yBXD5+ulO9sNO7uxA+/hcOznM7d2TLj/OJ8lS4RHUebydff1U+7YPVZWEKD3IbK5rx4fwcfNxZvMBDDjInJL9uVy+/kPmCxL6KaFO/QFIcfQiu/Eo8/q5N64iZZ/q8vWTXW1vLbP9LLv5I/gwFU9SIpK6FPP1jn526I1aktotSL/7ANpo2kT5x+zXN9r7p9nNddSlHRhXoYbo35vaxyaug2Bgn0wkmSdzBizNfMHFF23v58zrR5m9HX3aYg2FJzpyCBJ8eIGK+hKHO5SYXs7drFSzE8z505p2eqh/39E+YIBEDgqvV0wST5IlUm3IfiSEQJcf0U9SvZF63FyQ1Ek+ZzY3Z2AE/kwIzHT5WubzgX70PPPwQfbIX86Xs2e5WvnrS5hKbue9KXUsEaBUXL64lz061I83hC6/2kgEHC1IPCy88Qr8+iZO7sFqHGi/aTjLfyZ+wYDE2o/A6ofSHCzJejZ/EHfviF9hud13aUpgPzGnEGsbuWDWniQSuhMveHCyq8m1fLJOKfvxdva3kpCzdph5U7JPdfkw9AkeEs/01GU9c7j8HzKf3uqnb7JrU0ICmhe50TUMq+xrvwqxvaNDs94R4g6onxxTkokk82TOAISZL1Kl3z/Tvu9k3zeBk18T+CfxlI78C0RvMh/39TMcxAhKTDnL//IYcn546+X0JMr7MQac5V+vmCSeJEuk0gLgSj/yXX5EP0n1Js0FSZ3kc2ZzcwZG4M+EwCyXr8NC/iS+LTeySZcvp+m/bMCU3Z9Se4PxIBGgVF2+EHu7YMd/xYi0rIcE/e5jCFnHtg1Cxw6inbAuAO4ZAvvPcHa4l/0FKE5cfoxPkqXXuxMZMYzvCaKaqsScQvy0rp1ODQILIdDl576+hFjC2b72Wx7YSarzt5ew3g/8vPUC+6Ts01z+gbYRclcknumpk22UmHgn8+FN7mxPk6skSdnu/pj9tAvr/f6uRmAY1GPPW/J4t+e5fDKRZJ7MmcSAmi5n+XLxBQBP3pJJ4ikdOY59J46cFJPMKZtYbgIFQVDVr1dMEk+SJXDkitICwkkuP6qfpHoLylyQ1Ek+1fblFEbgT4zALJcPzvtAe/8os/Eo834HFvV/CdbIcQM/DMxDs3zpnoNEQPYHWMv/Ht2xLwcNx3tQoVzMJtuAnEXJqQBMAWVsMDTLh8ie4vLTsLSJ0YK9B5knJe+ft09bMVWJOYUQd8RDXPggZZGJgTuRkUm5r21anZr45WfcTYYr9KTs4bVnmBOH1/KjJpXEMz11KUKqtXxN7O3kzt5qm7MA2YTQfe7zOsD+bhem1BsazvL3cW6t4UQZA/vS+8KEO5RIMk/mnNIosa/CeE5fyyfxJB05KSaZ05u/3sFVmLeey79eMUk8SZY8JKNKC4lKPwo6b3hISqp3sE8obC5I6iSfkqVUShvTA/7ICNxCBGa5fIji+kek0E/DlBpfYOr5EVfTz94E44B4IiCGSwNnb7V3a5nNR6IgQcRxwOzDexrOkw5yn5+H1vJx3f37TvZdZC0/aZafiqXCY1g4h7X89ezehvZlJ+udtdMynw70sz1YDvfW8pNyCvFwXfvyKnlfAgoeuHwhBOxj2Nc27gia+v3s55fZ7ceZDdwwcfoK9zFQsuu4ueH4VXZzA5aBp7h8WMt/C3sjwnimpy6bLk1gXwYzYDH+Bfz7sJ64fU/6wnf3xU+l7Nd9z+XL5dtvzzObz1GiyVp+LpZIMk8Wl8xLV7GNwRWZQvyffis7hSfpyEkxyZwQKzrUvzez715h8ANn+dcrJoknyZKglBYQVvoR6fLvUuoNxRVzQVIn+ZTtm0ZpCU3gJEbgtiEww+XDSqrcVSSEwDlN7stjf418w9tpHN6x/ymaKOH6ZV07PsDIbWhOj6E5P36eDKv+Y+bjDti+0/3cl6f+jv2n/o797dCO/YTAfkqW1p5qcBT7EI4GfH2RCTZprz2V2+Zh53awY5/MCX4uOQgsRQy7fNyolfu2Dt8Q1O9lPu3C0fazw9z3XW3TX5KHjcrytIIvu9DE6yYcJzt6pX2dOsuHRkzAMy5RAnVYhkixfQ+mqkGs/lA/a3qHCNR2vns/+/kNwH6yq31+47l8cSezhxIdb2c/+4F9OpGEjiyOtGH3uL8RRGUmSAnO5R+9nHGpgIon6chJMcmcQhObcIAz930HAQnWsFT9vDIxEwilV1qp4Xj8ZNKPZDwjPMv3Ds7E1BtbRTUXBPUEPlMqbdD6/MII3F4EZrh8WnAZlo+drCMT6fKYCvOe0AhgSs5zfzUvS+cmxAVvCAIQ5DjZhiMeN+KBY5wYQpuT2xsmZhrprsBcpGGD8zACNxyB63D5P5Uy28/g8Ntx8l79S4GVXf6lwHh7KrmXPTqYHVi6Znl/yH7e1d4/y757CWf8znH/FWxxX34xU6N8ZeYiNUeckRG4uQhch8vHQ1BwW84T3IK3OPDY5S8OW655UQjkMx/f5E4PYMvF0Xb2yfRtB4tiYonqvTJzsUQyMyuMwKIQOJfLXxQzXC8jwAgwAowAI8AILAoBdvmLQpbrZQQYAUaAEWAElgoBdvlL1RzMDCPACDACjAAjsCgEUrn8fH3oOLZl9mrnWlgsd0yjvbIoCYJ69ZV6ZzA2LcsyBu3KOTZlXxGfAcP+y9bIjT+jrdW26bpmexUzhT6UGr2hYTmuO2755whXO2ak/LhZxFLFWndsOY5jjbs1mSIEUdxnQ/17QUCI4nqtZ1q24wwbMU3Sq51OJcUvFBN1qnxfSoq+sjUwbXgG9Rizl1J/rJJic2z1qikQiJW7OkBihPkjI8AI3EAEUrv8QX1+c+ThcSVWqdQYGqNWtagLkV9tDs1BfW6nfyV8Ujqiw5Mvbo2ccbOUx09itW3YpjlGn7/aHpumbeB7qdpoVMvNoTNx+QJL4H+F+sD2vig2hrbRrRT0fKVj2MMt6fSp4hRLmHZBQBKK6/VBxOXrK43uyLAcxzKNYac6vdkS6kwU4fxfrLQNq5tmFHJ+EuGS7PLDaPA7I8AILAaB/wdq+f2IuLkEHgAAAABJRU5ErkJggg=="},2103:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(55)-a08e1cba38e7d803616236beb059eefc.png"}}]); \ No newline at end of file diff --git a/assets/js/35e5a526.8af6073e.js b/assets/js/35e5a526.8af6073e.js new file mode 100644 index 000000000..df0904757 --- /dev/null +++ b/assets/js/35e5a526.8af6073e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7944],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function i(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),d=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",p={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,i=e.mdxType,o=e.originalType,s=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),c=d(n),m=i,h=c["".concat(s,".").concat(m)]||c[m]||p[m]||o;return n?r.createElement(h,l(l({ref:t},u),{},{components:n})):r.createElement(h,l({ref:t},u))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,l=new Array(o);l[0]=m;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[c]="string"==typeof e?e:i,l[1]=a;for(var d=2;d<o;d++)l[d]=n[d];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},6070:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=n(7462),i=(n(7294),n(3905));const o={},l="Building from source",a={unversionedId:"for-developers/building-nethermind",id:"for-developers/building-nethermind",title:"Building from source",description:"The Nethermind's source code can be obtained from our repository on",source:"@site/docs/05-for-developers/building-nethermind.md",sourceDirName:"05-for-developers",slug:"/for-developers/building-nethermind",permalink:"/docs/for-developers/building-nethermind",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/05-for-developers/building-nethermind.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"For Developers",permalink:"/docs/category/for-developers"},next:{title:"Coding Style",permalink:"/docs/for-developers/coding-style"}},s={},d=[{value:"Building standalone binaries",id:"building-standalone-binaries",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Building",id:"building",level:3},{value:"Running the client",id:"running-the-client",level:4},{value:"Testing",id:"testing",level:4},{value:"Bulding Docker image",id:"bulding-docker-image",level:2}],u={toc:d},c="wrapper";function p(e){let{components:t,...n}=e;return(0,i.kt)(c,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"building-from-source"},"Building from source"),(0,i.kt)("p",null,"The Nethermind's source code can be obtained from ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind"},"our repository")," on\nGitHub:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone --recursive https://github.com/nethermindeth/nethermind.git\n")),(0,i.kt)("p",null,"There are two options buiding Nethermind from source code:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/for-developers/building-nethermind#building-standalone-binaries"},"Standalone binaries")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/docs/for-developers/building-nethermind#bulding-docker-image"},"Docker image"))),(0,i.kt)("h2",{id:"building-standalone-binaries"},"Building standalone binaries"),(0,i.kt)("h3",{id:"prerequisites"},"Prerequisites"),(0,i.kt)("p",null,"To build Nethermind from source, install ",(0,i.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/en-us/download"},".NET SDK")," 7 or later."),(0,i.kt)("h3",{id:"building"},"Building"),(0,i.kt)("p",null,"To build both the client and tests, run the following command from the project's root directory:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet build src/Nethermind/Nethermind.sln -c release\n")),(0,i.kt)("p",null,"To simply run the client with a specific configuration without building tests, see below."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Before running the client or tests, ensure the\nplatform-specific ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/system-requirements"},"prerequisites")," are met.")),(0,i.kt)("h4",{id:"running-the-client"},"Running the client"),(0,i.kt)("p",null,"To launch the client, run the following command from the project's root directory (the previous step of the build is not\nrequired):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"cd src/Nethermind/Nethermind.Runner\ndotnet run -c release -- -c mainnet\n")),(0,i.kt)("p",null,"All Nethermind-specific parameters can be specified after ",(0,i.kt)("inlineCode",{parentName:"p"},"--"),". For instance, the command above specifies the Mainnet\nconfiguration only."),(0,i.kt)("p",null,"The build artifacts can be found in the ",(0,i.kt)("inlineCode",{parentName:"p"},"bin/release/net7.0")," directory. By default, the logs and database directories\nare located here as well."),(0,i.kt)("p",null,"For more info, see ",(0,i.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind/running-the-client"},"Running Nethermind"),"."),(0,i.kt)("h4",{id:"testing"},"Testing"),(0,i.kt)("p",null,"There are two test suites \u2014 Nethermind and Ethereum Foundation. Tests can be run with the following commands (the\ninitial step of the build is not required):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"cd src/Nethermind\n\n# Run Nethermind tests\ndotnet test Nethermind.sln -c release\n\n# Run Ethereum Foundation tests\ndotnet test EthereumTests.sln -c release\n")),(0,i.kt)("h2",{id:"bulding-docker-image"},"Bulding Docker image"),(0,i.kt)("p",null,"To build Nethermind Docker image, run the following command from the project's root directory:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker build -t nethermind .\n")),(0,i.kt)("p",null,"For more info about running Docker containers,\nsee ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/installing-nethermind#using-docker"},"How to install"),"."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/36132932.07023be6.js b/assets/js/36132932.07023be6.js new file mode 100644 index 000000000..881037b53 --- /dev/null +++ b/assets/js/36132932.07023be6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8217],{3905:(t,e,r)=>{r.d(e,{Zo:()=>p,kt:()=>b});var n=r(7294);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?a(Object(r),!0).forEach((function(e){o(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function c(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},a=Object.keys(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var s=n.createContext({}),l=function(t){var e=n.useContext(s),r=e;return t&&(r="function"==typeof t?t(e):i(i({},e),t)),r},p=function(t){var e=l(t.components);return n.createElement(s.Provider,{value:e},t.children)},m="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},f=n.forwardRef((function(t,e){var r=t.components,o=t.mdxType,a=t.originalType,s=t.parentName,p=c(t,["components","mdxType","originalType","parentName"]),m=l(r),f=o,b=m["".concat(s,".").concat(f)]||m[f]||u[f]||a;return r?n.createElement(b,i(i({ref:e},p),{},{components:r})):n.createElement(b,i({ref:e},p))}));function b(t,e){var r=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var a=r.length,i=new Array(a);i[0]=f;var c={};for(var s in e)hasOwnProperty.call(e,s)&&(c[s]=e[s]);c.originalType=t,c[m]="string"==typeof t?t:o,i[1]=c;for(var l=2;l<a;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},8899:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={},i="AccountAbstraction.Network",c={unversionedId:"monitoring/metrics-explanation/accountabstraction.network",id:"monitoring/metrics-explanation/accountabstraction.network",title:"AccountAbstraction.Network",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/accountabstraction.network.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/accountabstraction.network",permalink:"/docs/monitoring/metrics-explanation/accountabstraction.network",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/accountabstraction.network.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"AccountAbstraction",permalink:"/docs/monitoring/metrics-explanation/accountabstraction"},next:{title:"Blockchain",permalink:"/docs/monitoring/metrics-explanation/blockchain"}},s={},l=[],p={toc:l},m="wrapper";function u(t){let{components:e,...r}=t;return(0,o.kt)(m,(0,n.Z)({},p,r,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"accountabstractionnetwork"},"AccountAbstraction.Network"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,o.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"left"},"nethermind_user_operations_messages_received"),(0,o.kt)("td",{parentName:"tr",align:"left"},"Number of UserOperations messages received")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"left"},"nethermind_user_operations_messages_sent"),(0,o.kt)("td",{parentName:"tr",align:"left"},"Number of UserOperations messages sent")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/36cf5d25.f7f31820.js b/assets/js/36cf5d25.f7f31820.js new file mode 100644 index 000000000..2a336f5dc --- /dev/null +++ b/assets/js/36cf5d25.f7f31820.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3282],{3905:(t,e,n)=>{n.d(e,{Zo:()=>c,kt:()=>N});var r=n(7294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?l(Object(n),!0).forEach((function(e){a(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function o(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n,r,a={},l=Object.keys(t);for(r=0;r<l.length;r++)n=l[r],e.indexOf(n)>=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(r=0;r<l.length;r++)n=l[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}var p=r.createContext({}),m=function(t){var e=r.useContext(p),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},c=function(t){var e=m(t.components);return r.createElement(p.Provider,{value:e},t.children)},d="mdxType",f={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},s=r.forwardRef((function(t,e){var n=t.components,a=t.mdxType,l=t.originalType,p=t.parentName,c=o(t,["components","mdxType","originalType","parentName"]),d=m(n),s=a,N=d["".concat(p,".").concat(s)]||d[s]||f[s]||l;return n?r.createElement(N,i(i({ref:e},c),{},{components:n})):r.createElement(N,i({ref:e},c))}));function N(t,e){var n=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var l=n.length,i=new Array(l);i[0]=s;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[d]="string"==typeof t?t:a,i[1]=o;for(var m=2;m<l;m++)i[m]=n[m];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}s.displayName="MDXCreateElement"},7861:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>p,contentTitle:()=>i,default:()=>f,frontMatter:()=>l,metadata:()=>o,toc:()=>m});var r=n(7462),a=(n(7294),n(3905));const l={},i="Merge",o={unversionedId:"fundamentals/configuration/merge",id:"fundamentals/configuration/merge",title:"Merge",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/merge.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/merge",permalink:"/docs/fundamentals/configuration/merge",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/merge.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"KeyStore",permalink:"/docs/fundamentals/configuration/keystore"},next:{title:"Metrics",permalink:"/docs/fundamentals/configuration/metrics"}},p={},m=[],c={toc:m},d="wrapper";function f(t){let{components:e,...n}=t;return(0,a.kt)(d,(0,r.Z)({},c,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"merge"},"Merge"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"BuilderRelayUrl"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_BUILDERRELAYURL"),(0,a.kt)("td",{parentName:"tr",align:"left"},"URL to Builder Relay. If set when building blocks nethermind will send them to the relay."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"CollectionsPerDecommit"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Requests the GC to release process memory back to OS. Accept values ",(0,a.kt)("inlineCode",{parentName:"td"},"-1")," which disables it, ",(0,a.kt)("inlineCode",{parentName:"td"},"0")," which releases every time, and any positive integer which does it after that many EngineApi calls."),(0,a.kt)("td",{parentName:"tr",align:"left"},"75")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"CompactMemory"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_COMPACTMEMORY"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Reduces process used memory. Accept values ",(0,a.kt)("inlineCode",{parentName:"td"},"No")," which disables it, ",(0,a.kt)("inlineCode",{parentName:"td"},"Yes")," which compacts normal heaps, ",(0,a.kt)("inlineCode",{parentName:"td"},"Full")," compacts large object heap too (only when SweepMemory is set to ",(0,a.kt)("inlineCode",{parentName:"td"},"Gen2"),")."),(0,a.kt)("td",{parentName:"tr",align:"left"},"Yes")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_ENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines whether the Merge plugin is enabled bundles are allowed."),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"FinalTotalDifficulty"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Final total difficulty is total difficulty of the last PoW block. FinalTotalDifficulty >= TerminalTotalDifficulty."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"PrioritizeBlockLatency"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Reduces block EngineApi latency by disabling Garbage Collection during EngineApi calls."),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"SecondsPerSlot"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_SECONDSPERSLOT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Deprecated since v1.14.7. Please use Blocks.SecondsPerSlot. Seconds per slot."),(0,a.kt)("td",{parentName:"tr",align:"left"},"12")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"SweepMemory"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_SWEEPMEMORY"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Reduces memory usage by forcing Garbage Collection between EngineApi calls. Accept values ",(0,a.kt)("inlineCode",{parentName:"td"},"NoGc")," (-1), Gen0 (0), Gen1 (1), Gen2 (2)."),(0,a.kt)("td",{parentName:"tr",align:"left"},"Gen1")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TerminalBlockHash"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Terminal PoW block hash used for transition process."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TerminalBlockNumber"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Terminal PoW block number used for transition process."),(0,a.kt)("td",{parentName:"tr",align:"left"})),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TerminalTotalDifficulty"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Terminal total difficulty used for transition process."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/386d502a.1f9010b1.js b/assets/js/386d502a.1f9010b1.js new file mode 100644 index 000000000..ea3299c12 --- /dev/null +++ b/assets/js/386d502a.1f9010b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1035],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>f});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)t=o[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)t=o[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),c=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=c(e.components);return a.createElement(s.Provider,{value:n},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=c(t),m=r,f=d["".concat(s,".").concat(m)]||d[m]||p[m]||o;return t?a.createElement(f,l(l({ref:n},u),{},{components:t})):a.createElement(f,l({ref:n},u))}));function f(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,l=new Array(o);l[0]=m;var i={};for(var s in n)hasOwnProperty.call(n,s)&&(i[s]=n[s]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var c=2;c<o;c++)l[c]=t[c];return a.createElement.apply(null,l)}return a.createElement.apply(null,t)}m.displayName="MDXCreateElement"},5162:(e,n,t)=>{t.d(n,{Z:()=>l});var a=t(7294),r=t(6010);const o={tabItem:"tabItem_Ymn6"};function l(e){let{children:n,hidden:t,className:l}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(o.tabItem,l),hidden:t},n)}},4866:(e,n,t)=>{t.d(n,{Z:()=>I});var a=t(7462),r=t(7294),o=t(6010),l=t(2466),i=t(6550),s=t(1980),c=t(7392),u=t(12);function d(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:r}}=e;return{value:n,label:t,attributes:a,default:r}}))}function p(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??d(t);return function(e){const n=(0,c.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function f(e){let{queryString:n=!1,groupId:t}=e;const a=(0,i.k6)(),o=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,s._X)(o),(0,r.useCallback)((e=>{if(!o)return;const n=new URLSearchParams(a.location.search);n.set(o,e),a.replace({...a.location,search:n.toString()})}),[o,a])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,o=p(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:o}))),[s,c]=f({queryString:t,groupId:a}),[d,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,o]=(0,u.Nk)(t);return[a,(0,r.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:a}),N=(()=>{const e=s??d;return m({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{N&&i(N)}),[N]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);i(e),c(e),b(e)}),[c,b,o]),tabValues:o}}var N=t(2389);const E={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){let{className:n,block:t,selectedValue:i,selectValue:s,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.o5)(),p=e=>{const n=e.currentTarget,t=u.indexOf(n),a=c[t].value;a!==i&&(d(n),s(a))},m=e=>{let n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const t=u.indexOf(e.currentTarget)+1;n=u[t]??u[0];break}case"ArrowLeft":{const t=u.indexOf(e.currentTarget)-1;n=u[t]??u[u.length-1];break}}n?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":t},n)},c.map((e=>{let{value:n,label:t,attributes:l}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===n?0:-1,"aria-selected":i===n,key:n,ref:e=>u.push(e),onKeyDown:m,onClick:p},l,{className:(0,o.Z)("tabs__item",E.tabItem,l?.className,{"tabs__item--active":i===n})}),t??n)})))}function T(e){let{lazy:n,children:t,selectedValue:a}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},o.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a}))))}function g(e){const n=b(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",E.tabList)},r.createElement(h,(0,a.Z)({},e,n)),r.createElement(T,(0,a.Z)({},e,n)))}function I(e){const n=(0,N.Z)();return r.createElement(g,(0,a.Z)({key:String(n)},e))}},5161:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var a=t(7462),r=(t(7294),t(3905)),o=t(4866),l=t(5162);const i={},s="Sample configuration",c={unversionedId:"fundamentals/configuration/sample-configuration",id:"fundamentals/configuration/sample-configuration",title:"Sample configuration",description:'<Tabs defaultValue="mainnet" values={[',source:"@site/docs/02-fundamentals/04-configuration/sample-configuration.mdx",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/sample-configuration",permalink:"/docs/fundamentals/configuration/sample-configuration",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/sample-configuration.mdx",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Receipt",permalink:"/docs/fundamentals/configuration/receipt"},next:{title:"Seq",permalink:"/docs/fundamentals/configuration/seq"}},u={},d=[],p={toc:d},m="wrapper";function f(e){let{components:n,...t}=e;return(0,r.kt)(m,(0,a.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"sample-configuration"},"Sample configuration"),(0,r.kt)(o.Z,{defaultValue:"mainnet",values:[{label:"Mainnet",value:"mainnet"},{label:"Goerli",value:"goerli"},{label:"Sepolia",value:"sepolia"},{label:"Mainnet Environment Variables",value:"mainnet_env"}],mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"mainnet",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Init": {\n "ChainSpecPath": "chainspec/foundation.json",\n "GenesisHash": "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",\n "BaseDbPath": "nethermind_db/mainnet",\n "LogFileName": "mainnet.logs.txt",\n "MemoryHint": 2048000000\n },\n "Network": {\n "ActivePeersMaxCount": 100\n },\n "Sync": {\n "FastSync": true,\n "SnapSync": true,\n "PivotNumber": 17701000,\n "PivotHash": "0xecf98f6af857f3e0e7ef3aa3c392080f88ddea49cb71c11d56844303d708835a",\n "PivotTotalDifficulty": "58750003716598352816469",\n "FastBlocks": true,\n "AncientBodiesBarrier": 11052984,\n "AncientReceiptsBarrier": 11052984,\n "FastSyncCatchUpHeightDelta": "10000000000"\n },\n "EthStats": {\n "Server": "wss://ethstats.net/api"\n },\n "Metrics": {\n "NodeName": "Mainnet"\n },\n "Blocks": {\n "TargetBlockGasLimit": 30000000\n },\n "JsonRpc": {\n "Enabled": true,\n "Timeout": 20000,\n "Host": "127.0.0.1",\n "Port": 8545,\n "AdditionalRpcUrls": [\n "http://localhost:8551|http;ws|net;eth;subscribe;engine;web3;client"\n ]\n },\n "Merge": {\n "Enabled": true\n }\n}\n'))),(0,r.kt)(l.Z,{value:"goerli",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Init": {\n "ChainSpecPath": "chainspec/goerli.json",\n "GenesisHash": "0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a",\n "BaseDbPath": "nethermind_db/goerli",\n "LogFileName": "goerli.logs.txt",\n "MemoryHint": 768000000\n },\n "TxPool": {\n "Size": 1024\n },\n "Db": {\n "EnableMetricsUpdater": true\n },\n "Sync": {\n "FastSync": true,\n "SnapSync": true,\n "PivotNumber": 9330000,\n "PivotHash": "0x894d7ae19eb200f841d267c82229040426b648333d4765fe48a227ba1806be96",\n "PivotTotalDifficulty": "10790000",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": true,\n "FastSyncCatchUpHeightDelta": "10000000000"\n },\n "EthStats": {\n "Server": "wss://stats.goerli.net/api",\n "Name": "Nethermind"\n },\n "Metrics": {\n "NodeName": "Goerli"\n },\n "Blocks": {\n "TargetBlockGasLimit": 30000000\n },\n "Bloom": {\n "IndexLevelBucketSizes": [\n 16,\n 16,\n 16,\n 16\n ]\n },\n "JsonRpc": {\n "Enabled": true,\n "Timeout": 20000,\n "Host": "127.0.0.1",\n "Port": 8545,\n "AdditionalRpcUrls": [\n "http://localhost:8551|http;ws|net;eth;subscribe;engine;web3;client"\n ]\n },\n "Merge": {\n "Enabled": true\n }\n}\n'))),(0,r.kt)(l.Z,{value:"sepolia",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Init": {\n "ChainSpecPath": "chainspec/sepolia.json",\n "GenesisHash": "0x25a5cc106eea7138acab33231d7160d69cb777ee0c2c553fcddf5138993e6dd9",\n "BaseDbPath": "nethermind_db/sepolia",\n "LogFileName": "sepolia.logs.txt",\n "StaticNodesPath": "Data/static-nodes-sepolia.json",\n "MemoryHint": 1024000000\n },\n "TxPool": {\n "Size": 1024\n },\n "Metrics": {\n "NodeName": "Sepolia"\n },\n "Sync": {\n "FastSync": true,\n "FastBlocks": true,\n "SnapSync": true,\n "UseGethLimitsInFastBlocks": true,\n "PivotNumber": 3899000,\n "PivotHash": "0x45a1be0baa5ece2234feeb8806f6df9f4cb75951c465ace9c870be2a3f01c675",\n "PivotTotalDifficulty": "17000018015853232",\n "FastSyncCatchUpHeightDelta": "10000000000"\n },\n "Blocks": {\n "TargetBlockGasLimit": 30000000\n },\n "JsonRpc": {\n "Enabled": true,\n "Timeout": 20000,\n "Host": "127.0.0.1",\n "Port": 8545,\n "AdditionalRpcUrls": [\n "http://localhost:8551|http;ws|net;eth;subscribe;engine;web3;client"\n ]\n },\n "Merge": {\n "Enabled": true\n }\n}\n'))),(0,r.kt)(l.Z,{value:"mainnet_env",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"NETHERMIND_CONFIG=mainnet\nNETHERMIND_LOG_LEVEL=INFO\nNETHERMIND_JSONRPCCONFIG_ENABLEDMODULES=[Web3,Eth,Subscribe,Net]\nNETHERMIND_METRICSCONFIG_ENABLED=false\nNETHERMIND_METRICSCONFIG_NODENAME=Nethermind\nNETHERMIND_METRICSCONFIG_PUSHGATEWAYURL=http://localhost:9090/metrics-explanation\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED=false\nNETHERMIND_PRUNINGCONFIG_CACHEMB=2048\nNETHERMIND_ETHSTATSCONFIG_ENABLED=false\nNETHERMIND_ETHSTATSCONFIG_SERVER=http://localhost:3000/api\nNETHERMIND_ETHSTATSCONFIG_NAME=Nethermind\nNETHERMIND_ETHSTATSCONFIG_SECRET=secret\nNETHERMIND_ETHSTATSCONFIG_CONTACT=hello@nethermind.io\nNETHERMIND_SYNCCONFIG_FASTSYNC=true\nNETHERMIND_SYNCCONFIG_PIVOTNUMBER=13486000\nNETHERMIND_SYNCCONFIG_PIVOTHASH=0x98a267b3c1d4d6f543bdf542ced1066e55185a87c67b059ec7f406b64b30cac9\nNETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY=33073173643303586419891\nNETHERMIND_SYNCCONFIG_FASTBLOCKS=true\nNETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC=true\nNETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC=true\nNETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER=11052984\nNETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER=11052984\nNETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS=true\nNETHERMIND_SYNCCONFIG_WITNESSPROTOCOLENABLED=true\n")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/393be207.3e30333d.js b/assets/js/393be207.3e30333d.js new file mode 100644 index 000000000..50e7c0c97 --- /dev/null +++ b/assets/js/393be207.3e30333d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7414],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});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 p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),i=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):p(p({},t),e)),r},u=function(e){var t=i(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),m=i(r),s=o,d=m["".concat(l,".").concat(s)]||m[s]||f[s]||a;return r?n.createElement(d,p(p({ref:t},u),{},{components:r})):n.createElement(d,p({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,p=new Array(a);p[0]=s;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:o,p[1]=c;for(var i=2;i<a;i++)p[i]=r[i];return n.createElement.apply(null,p)}return n.createElement.apply(null,r)}s.displayName="MDXCreateElement"},3123:(e,t,r)=>{r.r(t),r.d(t,{contentTitle:()=>p,default:()=>m,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={title:"Markdown page example"},p="Markdown page example",c={type:"mdx",permalink:"/markdown-page",source:"@site/src/pages/markdown-page.md",title:"Markdown page example",description:"You don't need React to write simple standalone pages.",frontMatter:{title:"Markdown page example"}},l=[],i={toc:l},u="wrapper";function m(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},i,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"markdown-page-example"},"Markdown page example"),(0,o.kt)("p",null,"You don't need React to write simple standalone pages."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/394234c7.1878f28d.js b/assets/js/394234c7.1878f28d.js new file mode 100644 index 000000000..3c0d36ec0 --- /dev/null +++ b/assets/js/394234c7.1878f28d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6806],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),m=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=m(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=m(n),u=a,h=p["".concat(s,".").concat(u)]||p[u]||c[u]||i;return n?r.createElement(h,l(l({ref:t},d),{},{components:n})):r.createElement(h,l({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=u;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:a,l[1]=o;for(var m=2;m<i;m++)l[m]=n[m];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},314:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>m});var r=n(7462),a=(n(7294),n(3905));const i={},l="Manage Nethermind with systemd",o={unversionedId:"getting-started/manage-nethermind-with-systemd",id:"getting-started/manage-nethermind-with-systemd",title:"Manage Nethermind with systemd",description:"Create a new user",source:"@site/docs/01-getting-started/manage-nethermind-with-systemd.md",sourceDirName:"01-getting-started",slug:"/getting-started/manage-nethermind-with-systemd",permalink:"/docs/getting-started/manage-nethermind-with-systemd",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/01-getting-started/manage-nethermind-with-systemd.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing Nethermind",permalink:"/docs/getting-started/installing-nethermind"},next:{title:"Migrating From Geth",permalink:"/docs/getting-started/migrating-from-geth"}},s={},m=[{value:"Create a new user",id:"create-a-new-user",level:3},{value:"Install Dependencies",id:"install-dependencies",level:3},{value:"Get Nethermind",id:"get-nethermind",level:3},{value:"Manage Nethermind with systemd",id:"manage-nethermind-with-systemd-1",level:3}],d={toc:m},p="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"manage-nethermind-with-systemd"},"Manage Nethermind with systemd"),(0,a.kt)("h3",{id:"create-a-new-user"},"Create a new user"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Create a new user")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"sudo useradd -m -s /bin/bash nethermind\n")),(0,a.kt)("ol",{start:2},(0,a.kt)("li",{parentName:"ol"},"Increase the maximum number of open files")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"sudo bash -c 'echo \"nethermind soft nofile 1000000\" > /etc/security/limits.d/nethermind.conf'\n")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"sudo bash -c 'echo \"nethermind hard nofile 1000000\" >> /etc/security/limits.d/nethermind.conf'\n")),(0,a.kt)("ol",{start:3},(0,a.kt)("li",{parentName:"ol"},"Switch to the new user")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"sudo su - nethermind\n")),(0,a.kt)("h3",{id:"install-dependencies"},"Install Dependencies"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt-get update && sudo apt-get install libsnappy-dev libc6-dev libc6 unzip -y\n")),(0,a.kt)("h3",{id:"get-nethermind"},"Get Nethermind"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/docs/getting-started/installing-nethermind"},"Follow instructions")," to get the latest Nethermind package")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"wget [LINUX_PACKAGE_URL]\n")),(0,a.kt)("ol",{start:2},(0,a.kt)("li",{parentName:"ol"},"Extract the files")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"unzip [LINUX_PACKAGE_FILENAME] -d build\n")),(0,a.kt)("ol",{start:3},(0,a.kt)("li",{parentName:"ol"},"Create data directory for ",(0,a.kt)("inlineCode",{parentName:"li"},"logs"),", ",(0,a.kt)("inlineCode",{parentName:"li"},"database")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"keystore"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"mkdir data\n")),(0,a.kt)("ol",{start:4},(0,a.kt)("li",{parentName:"ol"},"Create ",(0,a.kt)("inlineCode",{parentName:"li"},".env")," file inside ",(0,a.kt)("inlineCode",{parentName:"li"},"data")," directory and provide environment variables to the Node configuration like for\nexample:")),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("inlineCode",{parentName:"p"},"NETHERMIND_CONFIG")," is the important one - defines the network config, the rest is optional.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title=".env"',title:'".env"'},'NETHERMIND_CONFIG="mainnet"\nNETHERMIND_JSONRPCCONFIG_ENABLED=true\nNETHERMIND_JSONRPCCONFIG_HOST="0.0.0.0"\nNETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"\n')),(0,a.kt)("ol",{start:5},(0,a.kt)("li",{parentName:"ol"},"Remove the no more need package ",(0,a.kt)("strong",{parentName:"li"},"(optional)"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"rm [LINUX_PACKAGE_FILENAME]\n")),(0,a.kt)("h3",{id:"manage-nethermind-with-systemd-1"},"Manage Nethermind with systemd"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Download the nethermind.service config")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"wget https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service\n")),(0,a.kt)("ol",{start:2},(0,a.kt)("li",{parentName:"ol"},"Move the config into the systemd folder")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"sudo mv nethermind.service /etc/systemd/system/\n")),(0,a.kt)("ol",{start:3},(0,a.kt)("li",{parentName:"ol"},"Reload the systemd configs")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl daemon-reload\n")),(0,a.kt)("ol",{start:4},(0,a.kt)("li",{parentName:"ol"},"Start nethermind service")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"You can now ",(0,a.kt)("inlineCode",{parentName:"p"},"start"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"stop"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"restart")," Nethermind with systemd")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"sudo service nethermind start\n")),(0,a.kt)("ol",{start:5},(0,a.kt)("li",{parentName:"ol"},"Display the current Nethermind output ",(0,a.kt)("strong",{parentName:"li"},"(optional)"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"journalctl -u nethermind -f\n")),(0,a.kt)("ol",{start:6},(0,a.kt)("li",{parentName:"ol"},"Enable autorun ",(0,a.kt)("strong",{parentName:"li"},"(optional)"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl enable nethermind\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/394f37a7.233e2820.js b/assets/js/394f37a7.233e2820.js new file mode 100644 index 000000000..624e00b9b --- /dev/null +++ b/assets/js/394f37a7.233e2820.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2831],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});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 c(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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},c=Object.keys(e);for(n=0;n<c.length;n++)r=c[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n<c.length;n++)r=c[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var i=n.createContext({}),s=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",m={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,c=e.originalType,i=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(r),f=o,d=p["".concat(i,".").concat(f)]||p[f]||m[f]||c;return r?n.createElement(d,a(a({ref:t},u),{},{components:r})):n.createElement(d,a({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var c=r.length,a=new Array(c);a[0]=f;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[p]="string"==typeof e?e:o,a[1]=l;for(var s=2;s<c;s++)a[s]=r[s];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},336:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>l,toc:()=>s});var n=r(7462),o=(r(7294),r(3905));const c={},a="Connecting Wallet",l={unversionedId:"resources/connecting-wallet",id:"resources/connecting-wallet",title:"Connecting Wallet",description:"You can connect to the node from Metamask by selecting localhost:8545 from the Metamask network list.",source:"@site/docs/07-resources/connecting-wallet.md",sourceDirName:"07-resources",slug:"/resources/connecting-wallet",permalink:"/docs/resources/connecting-wallet",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/connecting-wallet.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Resources",permalink:"/docs/category/resources"},next:{title:"FAQ",permalink:"/docs/resources/faq"}},i={},s=[],u={toc:s},p="wrapper";function m(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:"connecting-wallet"},"Connecting Wallet"),(0,o.kt)("p",null,"You can connect to the node from ",(0,o.kt)("a",{parentName:"p",href:"https://metamask.io/"},"Metamask")," by selecting ",(0,o.kt)("inlineCode",{parentName:"p"},"localhost:8545")," from the Metamask network list."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/NethermindEth/nethermind/raw/master/docs/source/metamask/localhost.png",alt:"Metamask localhost connection"})))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3cef4706.993265f9.js b/assets/js/3cef4706.993265f9.js new file mode 100644 index 000000000..2f3c4185e --- /dev/null +++ b/assets/js/3cef4706.993265f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7848],{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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(l.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,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(r),f=o,m=u["".concat(l,".").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 c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[u]="string"==typeof e?e:o,a[1]=c;for(var s=2;s<i;s++)a[s]=r[s];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},1357:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var n=r(7462),o=(r(7294),r(3905));const i={description:"Rules that should be added to your machine's firewall"},a="Firewall Configuration",c={unversionedId:"resources/firewall-configuration",id:"resources/firewall-configuration",title:"Firewall Configuration",description:"Rules that should be added to your machine's firewall",source:"@site/docs/07-resources/firewall-configuration.md",sourceDirName:"07-resources",slug:"/resources/firewall-configuration",permalink:"/docs/resources/firewall-configuration",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/firewall-configuration.md",tags:[],version:"current",frontMatter:{description:"Rules that should be added to your machine's firewall"},sidebar:"tutorialSidebar",previous:{title:"FAQ",permalink:"/docs/resources/faq"},next:{title:"Deploy Nethermind with Monitoring stack",permalink:"/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack"}},l={},s=[],p={toc:s},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:"firewall-configuration"},"Firewall Configuration"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Keep ",(0,o.kt)("inlineCode",{parentName:"p"},"8545")," ","(","or ",(0,o.kt)("inlineCode",{parentName:"p"},"8000-9000"),")"," closed except for the trusted machines - this is the JSON RPC port which gives admin access to the node.")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Keep TCP ",(0,o.kt)("inlineCode",{parentName:"p"},"30303")," ","(","or ",(0,o.kt)("inlineCode",{parentName:"p"},"30300-30400"),")"," open for the outside world so other nodes can connect to your node.")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Keep UDP ",(0,o.kt)("inlineCode",{parentName:"p"},"30303")," ","(","or ",(0,o.kt)("inlineCode",{parentName:"p"},"30300-30400"),")"," open for the outside world so other nodes can discover your node.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/44577fad.a6f603fc.js b/assets/js/44577fad.a6f603fc.js new file mode 100644 index 000000000..dc9480203 --- /dev/null +++ b/assets/js/44577fad.a6f603fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8979],{3905:(t,e,r)=>{r.d(e,{Zo:()=>p,kt:()=>d});var n=r(7294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?o(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function l(t,e){if(null==t)return{};var r,n,a=function(t,e){if(null==t)return{};var r,n,a={},o=Object.keys(t);for(n=0;n<o.length;n++)r=o[n],e.indexOf(r)>=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)r=o[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}var c=n.createContext({}),s=function(t){var e=n.useContext(c),r=e;return t&&(r="function"==typeof t?t(e):i(i({},e),t)),r},p=function(t){var e=s(t.components);return n.createElement(c.Provider,{value:e},t.children)},u="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},f=n.forwardRef((function(t,e){var r=t.components,a=t.mdxType,o=t.originalType,c=t.parentName,p=l(t,["components","mdxType","originalType","parentName"]),u=s(r),f=a,d=u["".concat(c,".").concat(f)]||u[f]||m[f]||o;return r?n.createElement(d,i(i({ref:e},p),{},{components:r})):n.createElement(d,i({ref:e},p))}));function d(t,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var o=r.length,i=new Array(o);i[0]=f;var l={};for(var c in e)hasOwnProperty.call(e,c)&&(l[c]=e[c]);l.originalType=t,l[u]="string"==typeof t?t:a,i[1]=l;for(var s=2;s<o;s++)i[s]=r[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},7803:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));const o={},i="Aura",l={unversionedId:"fundamentals/configuration/aura",id:"fundamentals/configuration/aura",title:"Aura",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/aura.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/aura",permalink:"/docs/fundamentals/configuration/aura",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/aura.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"AccountAbstraction",permalink:"/docs/fundamentals/configuration/accountabstraction"},next:{title:"AuRaMerge",permalink:"/docs/fundamentals/configuration/auramerge"}},c={},s=[],p={toc:s},u="wrapper";function m(t){let{components:e,...r}=t;return(0,a.kt)(u,(0,n.Z)({},p,r,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"aura"},"Aura"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"AllowAuRaPrivateChains"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If 'true' then you can run Nethermind only private chains. Do not use with existing Parity AuRa chains."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ForceSealing"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_AURACONFIG_FORCESEALING"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If 'true' then Nethermind if mining will seal empty blocks."),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If 'true' then when using BlockGasLimitContractTransitions if the contract returns less than 2mln gas, then 2 mln gas is used."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TxPriorityConfigFilePath"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If set then transaction priority rules are used when selecting transactions from transaction pool. This has higher priority then on chain contract rules. See more at contract details ",(0,a.kt)("a",{parentName:"td",href:"https://github.com/poanetwork/posdao-contracts/blob/master/contracts/TxPriority.sol"},"https://github.com/poanetwork/posdao-contracts/blob/master/contracts/TxPriority.sol")),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TxPriorityContractAddress"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If set then transaction priority contract is used when selecting transactions from transaction pool. See more at ",(0,a.kt)("a",{parentName:"td",href:"https://github.com/poanetwork/posdao-contracts/blob/master/contracts/TxPriority.sol"},"https://github.com/poanetwork/posdao-contracts/blob/master/contracts/TxPriority.sol")),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/463f6399.78289bd2.js b/assets/js/463f6399.78289bd2.js new file mode 100644 index 000000000..68d95339b --- /dev/null +++ b/assets/js/463f6399.78289bd2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1702],{3905:(t,e,r)=>{r.d(e,{Zo:()=>f,kt:()=>c});var a=r(7294);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,a)}return r}function o(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach((function(e){n(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function l(t,e){if(null==t)return{};var r,a,n=function(t,e){if(null==t)return{};var r,a,n={},i=Object.keys(t);for(a=0;a<i.length;a++)r=i[a],e.indexOf(r)>=0||(n[r]=t[r]);return n}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)r=i[a],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}var m=a.createContext({}),p=function(t){var e=a.useContext(m),r=e;return t&&(r="function"==typeof t?t(e):o(o({},e),t)),r},f=function(t){var e=p(t.components);return a.createElement(m.Provider,{value:e},t.children)},d="mdxType",k={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},N=a.forwardRef((function(t,e){var r=t.components,n=t.mdxType,i=t.originalType,m=t.parentName,f=l(t,["components","mdxType","originalType","parentName"]),d=p(r),N=n,c=d["".concat(m,".").concat(N)]||d[N]||k[N]||i;return r?a.createElement(c,o(o({ref:e},f),{},{components:r})):a.createElement(c,o({ref:e},f))}));function c(t,e){var r=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var i=r.length,o=new Array(i);o[0]=N;var l={};for(var m in e)hasOwnProperty.call(e,m)&&(l[m]=e[m]);l.originalType=t,l[d]="string"==typeof t?t:n,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}N.displayName="MDXCreateElement"},971:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>m,contentTitle:()=>o,default:()=>k,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=r(7462),n=(r(7294),r(3905));const i={},o="KeyStore",l={unversionedId:"fundamentals/configuration/keystore",id:"fundamentals/configuration/keystore",title:"KeyStore",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/keystore.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/keystore",permalink:"/docs/fundamentals/configuration/keystore",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/keystore.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"JsonRpc",permalink:"/docs/fundamentals/configuration/jsonrpc"},next:{title:"Merge",permalink:"/docs/fundamentals/configuration/merge"}},m={},p=[],f={toc:p},d="wrapper";function k(t){let{components:e,...r}=t;return(0,n.kt)(d,(0,a.Z)({},f,r,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"keystore"},"KeyStore"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockAuthorAccount"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Account to be used by the block author / coinbase, to be loaded from keystore"),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Cipher"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_CIPHER"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"aes-128-ctr")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"EnodeAccount"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Account to be used by the node for network communication (enode), to be loaded from keystore. If neither this nor EnodeKeyFile is specified, the key for network communication will be autogenerated in 'node.key.plain' file."),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"EnodeKeyFile"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Path to key file to be used by the node for network communication (enode). If neither this nor EnodeAccount is specified, the key for network communication will be autogenerated in 'node.key.plain' file. If the file does not exist it will be generated."),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"IVSize"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_IVSIZE"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"16")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Kdf"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_KDF"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"scrypt")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"KdfparamsDklen"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"32")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"KdfparamsN"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_KDFPARAMSN"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"262144")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"KdfparamsP"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_KDFPARAMSP"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"1")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"KdfparamsR"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_KDFPARAMSR"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"8")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"KdfparamsSaltLen"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"32")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"KeyStoreDirectory"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Directory to store keys in."),(0,n.kt)("td",{parentName:"tr",align:"left"},"keystore")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"KeyStoreEncoding"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"UTF-8")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"PasswordFiles"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_PASSWORDFILES"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Password files storing passwords to unlock the accounts from the UnlockAccounts configuration item"),(0,n.kt)("td",{parentName:"tr",align:"left"},"[]")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Passwords"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_PASSWORDS"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Passwords to use to unlock accounts from the UnlockAccounts configuration item. Only used when no PasswordFiles provided."),(0,n.kt)("td",{parentName:"tr",align:"left"},"[]")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"SymmetricEncrypterBlockSize"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"128")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"SymmetricEncrypterKeySize"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE"),(0,n.kt)("td",{parentName:"tr",align:"left"},"See ",(0,n.kt)("a",{parentName:"td",href:"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition"},"https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition")),(0,n.kt)("td",{parentName:"tr",align:"left"},"128")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TestNodeKey"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_TESTNODEKEY"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Plain private key to be used in test scenarios"),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"UnlockAccounts"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Accounts to unlock on startup using provided PasswordFiles and Passwords"),(0,n.kt)("td",{parentName:"tr",align:"left"},"[]")))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4808fd9f.a35f3b8b.js b/assets/js/4808fd9f.a35f3b8b.js new file mode 100644 index 000000000..eda0d1536 --- /dev/null +++ b/assets/js/4808fd9f.a35f3b8b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[45],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(7294);function i(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var d=r.createContext({}),l=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(d.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,d=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=l(n),u=i,h=m["".concat(d,".").concat(u)]||m[u]||c[u]||a;return n?r.createElement(h,o(o({ref:t},p),{},{components:n})):r.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=u;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[m]="string"==typeof e?e:i,o[1]=s;for(var l=2;l<a;l++)o[l]=n[l];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},6414:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=n(7462),i=(n(7294),n(3905));const a={description:"How to run Nethermind as your ETH1 endpoint for ETH2 clients"},o="ETH2 <-> Nethermind",s={unversionedId:"resources/guides-and-helpers/eth2-less-than-greater-than-nethermind",id:"resources/guides-and-helpers/eth2-less-than-greater-than-nethermind",title:"ETH2 <-> Nethermind",description:"How to run Nethermind as your ETH1 endpoint for ETH2 clients",source:"@site/docs/07-resources/guides-and-helpers/eth2-less-than-greater-than-nethermind.md",sourceDirName:"07-resources/guides-and-helpers",slug:"/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind",permalink:"/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/guides-and-helpers/eth2-less-than-greater-than-nethermind.md",tags:[],version:"current",frontMatter:{description:"How to run Nethermind as your ETH1 endpoint for ETH2 clients"},sidebar:"tutorialSidebar",previous:{title:"Deploy Nethermind with Monitoring stack",permalink:"/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack"},next:{title:"ETH2 <-> Nethermind",permalink:"/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind"}},d={},l=[{value:"Nethermind client as ETH1 endpoint",id:"nethermind-client-as-eth1-endpoint",level:2},{value:"Get & Run Nethermind",id:"get--run-nethermind",level:3},{value:"Running Nethermind as a systemd service",id:"running-nethermind-as-a-systemd-service",level:3},{value:"Monitoring Nethermind Node Health",id:"monitoring-nethermind-node-health",level:3}],p={toc:l},m="wrapper";function c(e){let{components:t,...a}=e;return(0,i.kt)(m,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"eth2---nethermind"},"ETH2 <-> Nethermind"),(0,i.kt)("h2",{id:"nethermind-client-as-eth1-endpoint"},"Nethermind client as ETH1 endpoint"),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"You should always consider being able to switch to Infura or another provider as a backup for safety (or run two nodes\nyourself):point","_","left:"," ")),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"For a more comprehensive step-by-step guide, you should look into one of these awesome\nguides -> ",(0,i.kt)("a",{parentName:"p",href:"https://someresat.medium.com/"},"https://someresat.medium.com/"),". Below you will find instructions on how to run\nNethermind node -> ",(0,i.kt)("strong",{parentName:"p"},"Step 6 \u2014 Set up an Ethereum (Eth1) Node"))),(0,i.kt)("h3",{id:"get--run-nethermind"},"Get & Run Nethermind"),(0,i.kt)("ul",{className:"contains-task-list"},(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Download the Nethermind client")),(0,i.kt)("p",null,"You can get it either\nfrom ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/installing-nethermind"},"Github Releases or our Downloads page")),(0,i.kt)("ul",{className:"contains-task-list"},(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","unzip the package"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","run the Nethermind node (use ",(0,i.kt)("inlineCode",{parentName:"li"},"Nethermind.Launcher")," or change ",(0,i.kt)("inlineCode",{parentName:"li"},"configs/mainnet.cfg")," and\nrun ",(0,i.kt)("inlineCode",{parentName:"li"},"Nethermind.Runner --config mainnet"),")")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"use the Linux ",(0,i.kt)("strong",{parentName:"p"},"screen")," utility to keep your node working in the background")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"screen -S nethermind\n./Nethermind.Launcher\n")),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(9922).Z,width:"1134",height:"152"})),(0,i.kt)("admonition",{type:"danger"},(0,i.kt)("p",{parentName:"admonition"},"Enable ",(0,i.kt)("strong",{parentName:"p"},"JSON RPC")," service so that your ETH2 Beacon node will be able to communicate")),(0,i.kt)("admonition",{type:"danger"},(0,i.kt)("p",{parentName:"admonition"},"Remember to setup you ",(0,i.kt)("a",{parentName:"p",href:"/docs/resources/firewall-configuration"},"firewall configuration"))),(0,i.kt)("p",null,"Configure EthStats for your node if needed:"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(7823).Z,width:"1141",height:"275"})),(0,i.kt)("p",null,"You should see the node starting:"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(4890).Z,width:"1139",height:"634"})),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"Tip:")," Ctrl + A + D to leave the ",(0,i.kt)("strong",{parentName:"p"},"screen"))),(0,i.kt)("h3",{id:"running-nethermind-as-a-systemd-service"},"Running Nethermind as a systemd service"),(0,i.kt)("p",null,"You might follow ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/manage-nethermind-with-systemd"},"the following guide")," to run Nethermind as\na\nsystemd service"),(0,i.kt)("h3",{id:"monitoring-nethermind-node-health"},"Monitoring Nethermind Node Health"),(0,i.kt)("p",null,"Follow ",(0,i.kt)("a",{parentName:"p",href:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture"},"this guide")," to setup\nPrometheus/Grafana based local setup and monitor your node's most important stats there"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(3616).Z,width:"1770",height:"949"})),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The Block Number will be ",(0,i.kt)("strong",{parentName:"p"},"0")," for the ",(0,i.kt)("strong",{parentName:"p"},"unsynced")," node")),(0,i.kt)("p",null,"To check if your node is synced you may execute ",(0,i.kt)("inlineCode",{parentName:"p"},"eth_syncing")," call check its result"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n')),(0,i.kt)("p",null,"If the result shows ",(0,i.kt)("inlineCode",{parentName:"p"},"false")," it means that your node is ",(0,i.kt)("strong",{parentName:"p"},"synced")," "),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'{"jsonrpc":"2.0","result":false,"id":1}\n')),(0,i.kt)("p",null,"Check ",(0,i.kt)("a",{parentName:"p",href:"/docs/monitoring/monitoring-node-health"},"the following guide")," to get even better node health monitoring:"))}c.isMDXComponent=!0},4890:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/image(1)(1)-189062dc7b4785de36663335c7a397fc.png"},9922:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/image(10)(1)(1)(1)(1)-988f55319637247e197816aeccc650b8.png"},7823:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/image(3)-914d4735c8b6a9a2377e1b12418b2361.png"},3616:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/image(4)-dea5ebfed3e2257f6e1e8be58a9e0f44.png"}}]); \ No newline at end of file diff --git a/assets/js/4972.42a6d37d.js b/assets/js/4972.42a6d37d.js new file mode 100644 index 000000000..20eac6451 --- /dev/null +++ b/assets/js/4972.42a6d37d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4972],{4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>i});var a=n(7294),l=n(5999),o=n(1944),r=n(7961);function i(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"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/4c9e35b1.af2ca165.js b/assets/js/4c9e35b1.af2ca165.js new file mode 100644 index 000000000..b93b747cb --- /dev/null +++ b/assets/js/4c9e35b1.af2ca165.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9035],{499:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/hola","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/4d90c4d9.2e2a7633.js b/assets/js/4d90c4d9.2e2a7633.js new file mode 100644 index 000000000..0061217d0 --- /dev/null +++ b/assets/js/4d90c4d9.2e2a7633.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8200],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>b});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}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},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="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,o=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=c(n),m=o,b=u["".concat(p,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(b,a(a({ref:t},s),{},{components:n})):r.createElement(b,a({ref:t},s))}));function b(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:o,a[1]=l;for(var c=2;c<i;c++)a[c]=n[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},7929:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(7462),o=(n(7294),n(3905));const i={},a="Web3.py",l={unversionedId:"for-developers/web3.py",id:"for-developers/web3.py",title:"Web3.py",description:"It is possible to connect to the Nethermind node using web3.py (python web3.js implementation). You will need to",source:"@site/docs/05-for-developers/web3.py.md",sourceDirName:"05-for-developers",slug:"/for-developers/web3.py",permalink:"/docs/for-developers/web3.py",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/05-for-developers/web3.py.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Plugins",permalink:"/docs/for-developers/plugins"},next:{title:"Nethermind Utilities",permalink:"/docs/category/nethermind-utilities"}},p={},c=[],s={toc:c},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"web3py"},"Web3.py"),(0,o.kt)("p",null,"It is possible to connect to the Nethermind node using ",(0,o.kt)("strong",{parentName:"p"},"web3.py")," (python web3.js implementation). You will need to\nhave ",(0,o.kt)("inlineCode",{parentName:"p"},"web3.py")," installed using following guides:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/ethereum/web3.py"},"https://github.com/ethereum/web3.py")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://web3py.readthedocs.io/en/stable/quickstart.html"},"https://web3py.readthedocs.io/en/stable/quickstart.html"))),(0,o.kt)("p",null,"You may use below script in order to check your connection. Please make sure you have enabled JSON RPC module, this can\nbe done by passing flag ",(0,o.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Enabled true")," to either Nethermind.Launcher or Nethermind.Runner"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},"from web3.auto import w3\n\nconnected = w3.isConnected()\nprint(connected)\n\nif connected and w3.clientVersion.startswith('Nethermind'):\n client = w3.clientVersion\n print(client)\n\nelse:\n client = None\n print(client)\n")),(0,o.kt)("p",null,"You should see the following output (depends on the node version):"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"True\nNethermind/v1.4.8-13-5c66dcdf6-20200120/X64-Linux 5.3.2-050302-generic/Core3.1.1\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4f2dfd2d.eb06befa.js b/assets/js/4f2dfd2d.eb06befa.js new file mode 100644 index 000000000..fc430cfb3 --- /dev/null +++ b/assets/js/4f2dfd2d.eb06befa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4173],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>b});var r=n(7294);function a(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="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,a=e.mdxType,l=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,b=p["".concat(s,".").concat(m)]||p[m]||d[m]||l;return n?r.createElement(b,i(i({ref:t},c),{},{components:n})):r.createElement(b,i({ref:t},c))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:a,i[1]=o;for(var u=2;u<l;u++)i[u]=n[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(7294),a=n(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(l.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>N});var r=n(7462),a=n(7294),l=n(6010),i=n(2466),o=n(6550),s=n(1980),u=n(7392),c=n(12);function p(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function d(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:n}=e;const r=(0,o.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,s._X)(l),(0,a.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(r.location.search);t.set(l,e),r.replace({...r.location,search:t.toString()})}),[l,r])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,l=d(e),[i,o]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:l}))),[s,u]=b({queryString:n,groupId:r}),[p,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,l]=(0,c.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:r}),k=(()=>{const e=s??p;return m({value:e,tabValues:l})?e:null})();(0,a.useLayoutEffect)((()=>{k&&o(k)}),[k]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),f(e)}),[u,f,l]),tabValues:l}}var k=n(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:t,block:n,selectedValue:o,selectValue:s,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,i.o5)(),d=e=>{const t=e.currentTarget,n=c.indexOf(t),r=u[n].value;r!==o&&(p(t),s(r))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:i}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},i,{className:(0,l.Z)("tabs__item",h.tabItem,i?.className,{"tabs__item--active":o===t})}),n??t)})))}function y(e){let{lazy:t,children:n,selectedValue:r}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function w(e){const t=f(e);return a.createElement("div",{className:(0,l.Z)("tabs-container",h.tabList)},a.createElement(g,(0,r.Z)({},e,t)),a.createElement(y,(0,r.Z)({},e,t)))}function N(e){const t=(0,k.Z)();return a.createElement(w,(0,r.Z)({key:String(t)},e))}},8165:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>o,metadata:()=>u,toc:()=>p});var r=n(7462),a=(n(7294),n(3905)),l=n(4866),i=n(5162);const o={},s="witness",u={unversionedId:"interacting-with-nethermind/json-rpc-api/witness",id:"interacting-with-nethermind/json-rpc-api/witness",title:"witness",description:"witness_witnesses",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/witness.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/witness",permalink:"/docs/interacting-with-nethermind/json-rpc-api/witness",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/witness.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/docs/interacting-with-nethermind/json-rpc-api/web3"},next:{title:"Monitoring",permalink:"/docs/category/monitoring"}},c={},p=[{value:"witness_witnesses",id:"witness_witnesses",level:2}],d={toc:p},m="wrapper";function b(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"witness"},"witness"),(0,a.kt)("h2",{id:"witness_witnesses"},"witness_witnesses"),(0,a.kt)("p",null,"Return witness of Block provided"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},'{"method":"witness_witnesses","params":[blockParameter]}'))))),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Block to get witness")))),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"Hash")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Table of hashes of state nodes that were read during block processing")))),(0,a.kt)(l.Z,{mdxType:"Tabs"},(0,a.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'curl --data \'{"method":"witness_witnesses","params":[{"jsonrpc":"2.0","result":["0xa2a9f03b9493046696099d27b2612b99497aa1f392ec966716ab393c715a5bb6"],"id":67}],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,a.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "jsonrpc": "2.0",\n "result": "0x1",\n "id": 1\n}\n'))),(0,a.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,a.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4f624714.4271821c.js b/assets/js/4f624714.4271821c.js new file mode 100644 index 000000000..a015c2a6d --- /dev/null +++ b/assets/js/4f624714.4271821c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9475],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),c=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=c(a),m=r,b=d["".concat(p,".").concat(m)]||d[m]||u[m]||l;return a?n.createElement(b,o(o({ref:t},s),{},{components:a})):n.createElement(b,o({ref:t},s))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[d]="string"==typeof e?e:r,o[1]=i;for(var c=2;c<l;c++)o[c]=a[c];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>o});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:a,className:o}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>x});var n=a(7462),r=a(7294),l=a(6010),o=a(2466),i=a(6550),p=a(1980),c=a(7392),s=a(12);function d(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function u(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??d(a);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:a}=e;const n=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,p._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function f(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=u(e),[o,i]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[p,c]=b({queryString:a,groupId:n}),[d,f]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,s.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),k=(()=>{const e=p??d;return m({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{k&&i(k)}),[k]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),c(e),f(e)}),[c,f,l]),tabValues:l}}var k=a(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function N(e){let{className:t,block:a,selectedValue:i,selectValue:p,tabValues:c}=e;const s=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.o5)(),u=e=>{const t=e.currentTarget,a=s.indexOf(t),n=c[a].value;n!==i&&(d(t),p(n))},m=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const a=s.indexOf(e.currentTarget)+1;t=s[a]??s[0];break}case"ArrowLeft":{const a=s.indexOf(e.currentTarget)-1;t=s[a]??s[s.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},c.map((e=>{let{value:t,label:a,attributes:o}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>s.push(e),onKeyDown:m,onClick:u},o,{className:(0,l.Z)("tabs__item",h.tabItem,o?.className,{"tabs__item--active":i===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=f(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",h.tabList)},r.createElement(N,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function x(e){const t=(0,k.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},9651:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>p,default:()=>b,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),o=a(5162);const i={},p="txpool",c={unversionedId:"interacting-with-nethermind/json-rpc-api/txpool",id:"interacting-with-nethermind/json-rpc-api/txpool",title:"txpool",description:"txpool_content",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/txpool.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/txpool",permalink:"/docs/interacting-with-nethermind/json-rpc-api/txpool",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/txpool.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/docs/interacting-with-nethermind/json-rpc-api/trace"},next:{title:"web3",permalink:"/docs/interacting-with-nethermind/json-rpc-api/web3"}},s={},d=[{value:"txpool_content",id:"txpool_content",level:2},{value:"txpool_inspect",id:"txpool_inspect",level:2},{value:"txpool_status",id:"txpool_status",level:2}],u={toc:d},m="wrapper";function b(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"txpool"},"txpool"),(0,r.kt)("h2",{id:"txpool_content"},"txpool_content"),(0,r.kt)("p",null,"Returns tx pool content. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"txpool_content","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxPoolContent object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"txpool_content","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"0x0f990ef7ec160f01af7148b74cc8a86fe46c551e":{"153":{"hash":"0x84f6f2e5d24b9a0c25bd7018adbbf4388b2c07842782f73d5ddc389906d5f2c8","nonce":"0x99","blockHash":null,"blockNumber":null,"transactionIndex":null,"from":"0x0f990ef7ec160f01af7148b74cc8a86fe46c551e","to":"0x1b4e4664de1d57b665b4bf3523cbccf007766de3","value":"0xc8","gasPrice":"0x3b9aca08","gas":"0x1c9c37f","data":"0xaeeb89600000000000000000000000000000000000000000000000000000000000000001","input":"0xaeeb89600000000000000000000000000000000000000000000000000000000000000001","type":"0x0","v":"0x2c","s":"0x20158ce3f4f9c65f8c657c0d91bbfb43632b2951f6192bca8fb3a25c26dd81d5","r":"0x2814d998f2a78dd4f37461485d88158a32ef5dcfa8c57e224b3ea77536df01b1"}}},\n "id": 1\n}\n'))),(0,r.kt)(o.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxPoolContent")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Pending"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Queued"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/txpool#txpool-content"},"See also CLI txpool.content")),(0,r.kt)("h2",{id:"txpool_inspect"},"txpool_inspect"),(0,r.kt)("p",null,"Returns a detailed info on tx pool transactions. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"txpool_inspect","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxPoolInspection object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"txpool_inspect","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"0xb49928fcb10123e451cfe63aa47edcaea0f8aeea":{"20":"0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6721975 \xd7 140000000000 gas","21":"0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6721975 \xd7 140000000000 gas","22":"0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6721975 \xd7 140000000000 gas","23":"0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6700000 \xd7 140000000000 gas","24":"0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6700000 \xd7 140000000000 gas","27":"0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6700000 \xd7 140000000000 gas"},"0xc51db3339a7603f70b347a0b9680554f777d1f3c":{"82":"0xc51db3339a7603f70b347a0b9680554f777d1f3c: 0 wei + 4500000 \xd7 10000000000 gas"},"0x084dd4aefc6853253573fee9f5fcc23e849d164c":{"17":"0x084dd4aefc6853253573fee9f5fcc23e849d164c: 0 wei + 28472169 \xd7 1000000008 gas"}},\n "id": 1\n}\n'))),(0,r.kt)(o.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxPoolInspection")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Pending"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Queued"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/txpool#txpool-inspect"},"See also CLI txpool.inspect")),(0,r.kt)("h2",{id:"txpool_status"},"txpool_status"),(0,r.kt)("p",null,"Returns a tx pool status. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"txpool_status","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxPoolStatus object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"txpool_status","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"pending":1010,"queued":14},\n "id": 1\n}\n'))),(0,r.kt)(o.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxPoolStatus")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Pending"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Queued"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/txpool#txpool-status"},"See also CLI txpool.status")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5151d7fe.144fe83c.js b/assets/js/5151d7fe.144fe83c.js new file mode 100644 index 000000000..4fb47b5cf --- /dev/null +++ b/assets/js/5151d7fe.144fe83c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5608],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>f});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),c=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=c(e.components);return r.createElement(s.Provider,{value:n},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(t),d=a,f=p["".concat(s,".").concat(d)]||p[d]||m[d]||o;return t?r.createElement(f,i(i({ref:n},u),{},{components:t})):r.createElement(f,i({ref:n},u))}));function f(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=d;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[p]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=t[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,t)}d.displayName="MDXCreateElement"},5162:(e,n,t)=>{t.d(n,{Z:()=>i});var r=t(7294),a=t(6010);const o={tabItem:"tabItem_Ymn6"};function i(e){let{children:n,hidden:t,className:i}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,i),hidden:t},n)}},4866:(e,n,t)=>{t.d(n,{Z:()=>E});var r=t(7462),a=t(7294),o=t(6010),i=t(2466),l=t(6550),s=t(1980),c=t(7392),u=t(12);function p(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}function m(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??p(t);return function(e){const n=(0,c.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[n,t])}function d(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function f(e){let{queryString:n=!1,groupId:t}=e;const r=(0,l.k6)(),o=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,s._X)(o),(0,a.useCallback)((e=>{if(!o)return;const n=new URLSearchParams(r.location.search);n.set(o,e),r.replace({...r.location,search:n.toString()})}),[o,r])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,o=m(e),[i,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!d({value:n,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:o}))),[s,c]=f({queryString:t,groupId:r}),[p,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,o]=(0,u.Nk)(t);return[r,(0,a.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:r}),h=(()=>{const e=s??p;return d({value:e,tabValues:o})?e:null})();(0,a.useLayoutEffect)((()=>{h&&l(h)}),[h]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!d({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),b(e)}),[c,b,o]),tabValues:o}}var h=t(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:n,block:t,selectedValue:l,selectValue:s,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:p}=(0,i.o5)(),m=e=>{const n=e.currentTarget,t=u.indexOf(n),r=c[t].value;r!==l&&(p(n),s(r))},d=e=>{let n=null;switch(e.key){case"Enter":m(e);break;case"ArrowRight":{const t=u.indexOf(e.currentTarget)+1;n=u[t]??u[0];break}case"ArrowLeft":{const t=u.indexOf(e.currentTarget)-1;n=u[t]??u[u.length-1];break}}n?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":t},n)},c.map((e=>{let{value:n,label:t,attributes:i}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,key:n,ref:e=>u.push(e),onKeyDown:d,onClick:m},i,{className:(0,o.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":l===n})}),t??n)})))}function v(e){let{lazy:n,children:t,selectedValue:r}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r}))))}function w(e){const n=b(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},a.createElement(y,(0,r.Z)({},e,n)),a.createElement(v,(0,r.Z)({},e,n)))}function E(e){const n=(0,h.Z)();return a.createElement(w,(0,r.Z)({key:String(n)},e))}},1081:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>f,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=t(7462),a=(t(7294),t(3905)),o=t(4866),i=t(5162);const l={},s="Engine JsonRpc Config Example",c={unversionedId:"interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example",id:"interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example",title:"Engine JsonRpc Config Example",description:"In this page we will layout an example configuration for the JsonRpc module.",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/engine-jsonrpc-config-example.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example",permalink:"/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/engine-jsonrpc-config-example.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/docs/interacting-with-nethermind/json-rpc-api/debug"},next:{title:"eth",permalink:"/docs/interacting-with-nethermind/json-rpc-api/eth"}},u={},p=[],m={toc:p},d="wrapper";function f(e){let{components:n,...t}=e;return(0,a.kt)(d,(0,r.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"engine-jsonrpc-config-example"},"Engine JsonRpc Config Example"),(0,a.kt)("p",null,"In this page we will layout an example configuration for the JsonRpc module."),(0,a.kt)(o.Z,{mdxType:"Tabs"},(0,a.kt)(i.Z,{value:"cli",label:"Cli",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},'./Nethermind.Runner \\\n\n--JsonRpc.EnginePort=8551 \\\n\n--JsonRpc.JwtSecretFile="keystore/jwt-secret"\n')),(0,a.kt)("p",null,"or"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},'./Nethermind.Runner\n\n--JsonRpc.EnginePort=8551\n\n--JsonRpc.EngineHost=0.0.0.0\n\n--JsonRpc.JwtSecretFile="keystore/jwt-secret"\n\n'))),(0,a.kt)(i.Z,{value:"config",label:"Config",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "JsonRpc": {\n "Enabled": true,\n "Timeout": 20000,\n "Host": "127.0.0.1",\n "Port": 8545,\n "EnabledModules": [\n "Eth",\n "Subscribe",\n "Trace",\n "TxPool",\n "Web3",\n "Personal",\n "Proof",\n "Net",\n "Parity",\n "Health"\n ],\n "EnginePort": 8551,\n "JwtSecretFile": "keystore/jwt-secret"\n }\n}\n')),(0,a.kt)("p",null,"or"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "JsonRpc": {\n "Enabled": true,\n "Timeout": 20000,\n "Host": "127.0.0.1",\n "Port": 8545,\n "EnabledModules": [\n "Eth",\n "Subscribe",\n "Trace",\n "TxPool",\n "Web3",\n "Personal",\n "Proof",\n "Net",\n "Parity",\n "Health"\n ],\n "EnginePort": 8551,\n "EngineHost": "0.0.0.0",\n "JwtSecretFile": "keystore/jwt-secret"\n }\n}\n\n')))),(0,a.kt)("p",null,"In the first example above the consensus client can connect to Nethermind on port 8551 if the consensus client is on the\nsame machine. JsonRpc for other things is available at port 8545 on the same machine."," "),(0,a.kt)("p",null,"If you want to use a consensus client that's on a different machine, you can add the ",(0,a.kt)("inlineCode",{parentName:"p"},"JsonRpc.EngineHost")," parameter and\nuse ",(0,a.kt)("inlineCode",{parentName:"p"},"0.0.0.0")," like the second example above. This will expose the JsonRpc.Engine to the outside."," "),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"If you want to change",(0,a.kt)("inlineCode",{parentName:"p"},"JsonRpc.EngineHost, JsonRpc.EnginePort")," should be specified as well.")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/515ed2ae.ce034015.js b/assets/js/515ed2ae.ce034015.js new file mode 100644 index 000000000..77a3f4c6d --- /dev/null +++ b/assets/js/515ed2ae.ce034015.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2345],{3905:(e,n,t)=>{t.d(n,{Zo:()=>s,kt:()=>f});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var d=r.createContext({}),c=function(e){var n=r.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},s=function(e){var n=c(e.components);return r.createElement(d.Provider,{value:n},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,d=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=c(t),m=a,f=u["".concat(d,".").concat(m)]||u[m]||p[m]||i;return t?r.createElement(f,o(o({ref:n},s),{},{components:t})):r.createElement(f,o({ref:n},s))}));function f(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=m;var l={};for(var d in n)hasOwnProperty.call(n,d)&&(l[d]=n[d]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=t[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,t)}m.displayName="MDXCreateElement"},7744:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=t(7462),a=(t(7294),t(3905));const i={},o="Runtime",l={unversionedId:"fundamentals/running-nethermind/runtime",id:"fundamentals/running-nethermind/runtime",title:"Runtime",description:"Directories",source:"@site/docs/02-fundamentals/01-running-nethermind/runtime.md",sourceDirName:"02-fundamentals/01-running-nethermind",slug:"/fundamentals/running-nethermind/runtime",permalink:"/docs/fundamentals/running-nethermind/runtime",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/01-running-nethermind/runtime.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Running the client",permalink:"/docs/fundamentals/running-nethermind/running-the-client"},next:{title:"Sync modes",permalink:"/docs/fundamentals/sync-modes"}},d={},c=[{value:"Directories",id:"directories",level:2},{value:"Static nodes",id:"static-nodes",level:2},{value:"NLog config",id:"nlog-config",level:2},{value:"Building from repository",id:"building-from-repository",level:3},{value:"Downloading package from Github/Downloads package",id:"downloading-package-from-githubdownloads-package",level:3},{value:"Running Nethermind with docker image",id:"running-nethermind-with-docker-image",level:3}],s={toc:c},u="wrapper";function p(e){let{components:n,...i}=e;return(0,a.kt)(u,(0,r.Z)({},s,i,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"runtime"},"Runtime"),(0,a.kt)("h2",{id:"directories"},"Directories"),(0,a.kt)("p",null,"If you built the application locally then the entry point will be located in:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"src/Nethermind/Nethermind.Runner/bin/Release/net7.0/\n")),(0,a.kt)("p",null,"Log files by default are located in:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"src/Nethermind/Nethermind.Runner/bin/Release/net7.0/logs\n")),(0,a.kt)("p",null,"Database by default is located in:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"src/Nethermind/Nethermind.Runner/bin/Release/net7.0/nethermind_db\n")),(0,a.kt)("h2",{id:"static-nodes"},"Static nodes"),(0,a.kt)("p",null,"Static nodes are a pre-configured array of nodes you can trust. They can be defined with a simple ",(0,a.kt)("inlineCode",{parentName:"p"},"static-nodes.json")," file containing a list of ",(0,a.kt)("inlineCode",{parentName:"p"},"enodes")," separated with comma."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},'[\n "enode://c1c3a604950119f82d78189792b73f5a96bd09017c77465e3c32fc51c1d758a9a772ffddd58436d465342f2cfa6d4a442a49e526743f4d8354d7c5ce794c3ee5@127.0.0.1:30303",\n "enode://2784b947df025df9911875e68ccfcb0627ad4ae1dfb9f77634435692e8626508d9a6a04adff7719d3d73b25e72cbedee8d8e431492afbbd5fb4082e78c52d934@127.0.0.1:30303"\n]\n')),(0,a.kt)("p",null,"By default ",(0,a.kt)("inlineCode",{parentName:"p"},"static-nodes.json")," file is stored in ",(0,a.kt)("inlineCode",{parentName:"p"},"Data/")," folder included in Nethermind packages. Path to ",(0,a.kt)("inlineCode",{parentName:"p"},"static-nodes")," file can be configured via ",(0,a.kt)("a",{parentName:"p",href:"/docs/fundamentals/configuration/init"},(0,a.kt)("inlineCode",{parentName:"a"},"StaticNodesPath"))," parameter."),(0,a.kt)("h2",{id:"nlog-config"},"NLog config"),(0,a.kt)("p",null,"You can change the level of logging in file and in the console by choosing one of the levels (Error, Warn, Info, Debug, Trace):"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},'<logger name="*" minlevel="Info" writeTo="file-async"/>\n<logger name="*" minlevel="Info" writeTo="auto-colored-console-async"/>\n')),(0,a.kt)("p",null,"More detailed NLog configuration can be found ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/NLog/NLog/wiki/Configuration-file"},"here"),"."),(0,a.kt)("h3",{id:"building-from-repository"},"Building from repository"),(0,a.kt)("p",null,"Logging level can be controlled in ",(0,a.kt)("inlineCode",{parentName:"p"},"NLog.config")," file located in:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"src/Nethermind/Nethermind.Runner/bin/Release/net7.0/NLog.config\n")),(0,a.kt)("h3",{id:"downloading-package-from-githubdownloads-package"},"Downloading package from Github/Downloads package"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"NLog.config")," file is supplied with the package and can be found in extraction directory."),(0,a.kt)("p",null,(0,a.kt)("img",{src:t(748).Z,width:"1094",height:"341"})),(0,a.kt)("h3",{id:"running-nethermind-with-docker-image"},"Running Nethermind with docker image"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"NLog.config")," file is located at ",(0,a.kt)("inlineCode",{parentName:"p"},"/nethermind/NLog.config")," path inside the docker container. The volume can be then mapped with a simple command:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"-v /home/user/NLog.config:/nethermind/NLog.config\n")))}p.isMDXComponent=!0},748:(e,n,t)=>{t.d(n,{Z:()=>r});const r=t.p+"assets/images/image(30)-ac87f6bdbf310375c851da28724cd3e6.png"}}]); \ No newline at end of file diff --git a/assets/js/535c1ff5.5f55c906.js b/assets/js/535c1ff5.5f55c906.js new file mode 100644 index 000000000..6c59b42e4 --- /dev/null +++ b/assets/js/535c1ff5.5f55c906.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4693],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});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 i(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),p=c(n),d=r,h=p["".concat(l,".").concat(d)]||p[d]||u[d]||i;return n?a.createElement(h,o(o({ref:t},m),{},{components:n})):a.createElement(h,o({ref:t},m))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,o[1]=s;for(var c=2;c<i;c++)o[c]=n[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},9121:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var a=n(7462),r=(n(7294),n(3905));const i={description:"Metrics then can be used to monitor your running Nethermind nodes"},o="Setting up local Metrics infrastructure",s={unversionedId:"monitoring/metrics-explanation/setting-up-local-metrics-infrastracture",id:"monitoring/metrics-explanation/setting-up-local-metrics-infrastracture",title:"Setting up local Metrics infrastructure",description:"Metrics then can be used to monitor your running Nethermind nodes",source:"@site/docs/04-monitoring/metrics-explanation/setting-up-local-metrics-infrastracture.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture",permalink:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/setting-up-local-metrics-infrastracture.md",tags:[],version:"current",frontMatter:{description:"Metrics then can be used to monitor your running Nethermind nodes"},sidebar:"tutorialSidebar",previous:{title:"Runner module",permalink:"/docs/monitoring/metrics-explanation/runner"},next:{title:"Store module",permalink:"/docs/monitoring/metrics-explanation/store"}},l={},c=[{value:"Metrics Configuration",id:"metrics-configuration",level:2},{value:"Metrics infrastructure",id:"metrics-infrastructure",level:2},{value:"Enabling Metrics in Nethermind",id:"enabling-metrics-in-nethermind",level:3},{value:"Running sample configuration",id:"running-sample-configuration",level:3},{value:"Prometheus, Pushgateway and Grafana sources",id:"prometheus-pushgateway-and-grafana-sources",level:3}],m={toc:c},p="wrapper";function u(e){let{components:t,...i}=e;return(0,r.kt)(p,(0,a.Z)({},m,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"setting-up-local-metrics-infrastructure"},"Setting up local Metrics infrastructure"),(0,r.kt)("h2",{id:"metrics-configuration"},"Metrics Configuration"),(0,r.kt)("p",null,"Nethermind metrics can be consumed by ",(0,r.kt)("em",{parentName:"p"},"Prometheus/Grafana")," if configured\nin ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/configuration/metrics"},"Metrics configuration category"),"."),(0,r.kt)("h2",{id:"metrics-infrastructure"},"Metrics infrastructure"),(0,r.kt)("h3",{id:"enabling-metrics-in-nethermind"},"Enabling Metrics in Nethermind"),(0,r.kt)("p",null,"Metrics can be enabled by simply passing ",(0,r.kt)("inlineCode",{parentName:"p"},"--Metrics.Enabled true")," argument to the Docker containers,",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner"),"\nor ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Launcher")," e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"./Nethermind.Runner --Metrics.Enabled true"),"."),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Metrics.PushGatewayUrl")," will need to be amended if pushgateway endpoint is not default."),(0,r.kt)("h3",{id:"running-sample-configuration"},"Running sample configuration"),(0,r.kt)("ul",{className:"contains-task-list"},(0,r.kt)("li",{parentName:"ul",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","clone ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/NethermindEth/metrics-infrastructure"},"metrics-infrastructure")," repository")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/NethermindEth/metrics-infrastructure.git\n")),(0,r.kt)("ol",{className:"contains-task-list"},(0,r.kt)("li",{parentName:"ol",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","go to ",(0,r.kt)("inlineCode",{parentName:"li"},"metrics-infrastructure")," directory")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cd metrics-explanation-infrastructure\n")),(0,r.kt)("ol",{className:"contains-task-list"},(0,r.kt)("li",{parentName:"ol",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","run docker stack")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose up -d\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("em",{parentName:"li"},"Prometheus")," instance should be now running on ",(0,r.kt)("a",{parentName:"li",href:"http://localhost:9090/"},(0,r.kt)("inlineCode",{parentName:"a"},"http://localhost:9090/"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("em",{parentName:"li"},"Pushgateway")," on ",(0,r.kt)("a",{parentName:"li",href:"http://localhost:9091/"},(0,r.kt)("inlineCode",{parentName:"a"},"http://localhost:9091/"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("em",{parentName:"li"},"Grafana on")," ",(0,r.kt)("a",{parentName:"li",href:"http://localhost:3000/"},(0,r.kt)("inlineCode",{parentName:"a"},"http://localhost:3000/")),"`","`")),(0,r.kt)("ol",{className:"contains-task-list"},(0,r.kt)("li",{parentName:"ol",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","run the ",(0,r.kt)("inlineCode",{parentName:"li"},"Nethermind")," node with ",(0,r.kt)("inlineCode",{parentName:"li"},"Metrics")," enabled and you should see metrics inflowing on\n",(0,r.kt)("em",{parentName:"li"},"Pushgateway")," ",(0,r.kt)("a",{parentName:"li",href:"http://localhost:9091/"},"url"))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can add nethermind service to the ",(0,r.kt)("inlineCode",{parentName:"p"},"docker-compose.yml")," file so that it runs with the whole stack"),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"nethermind:\n image: nethermind/nethermind\n container_name: nethermind\n restart: unless-stopped\n command: '--config goerli --Metrics.Enabled true'\n network_mode: host\n volumes:\n - ./nethermind_db/:/nethermind/nethermind_db/\n - ./keystore/:/nethermind/keystore/\n - ./logs/:/nethermind/logs/\n"))),(0,r.kt)("p",null,'{% tabs %}\n{% tab title="Runner" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Runner --Metrics.Enabled true\n")),(0,r.kt)("p",null,"{% endtab %}"),(0,r.kt)("p",null,'{% tab title="Launcher" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Launcher --Metrics.Enabled true\n")),(0,r.kt)("p",null,"{% endtab %}"),(0,r.kt)("p",null,'{% tab title="Docker" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it --network host nethermind/nethermind:alpine --Metrics.Enabled\n")),(0,r.kt)("p",null,"{% endtab %}\n{% endtabs %}"),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://nethermind.readthedocs.io/en/latest/_images/pushgateway.png",alt:"http://localhost:9091/"})),(0,r.kt)("ol",{className:"contains-task-list"},(0,r.kt)("li",{parentName:"ol",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","open ",(0,r.kt)("em",{parentName:"li"},"Grafana")," ",(0,r.kt)("a",{parentName:"li",href:"http://localhost:3000"},"url")," and login with default login ","(","admin",")"," and password ","(","admin",")",", skip\npassword change if you want")),(0,r.kt)("ul",{className:"contains-task-list"},(0,r.kt)("li",{parentName:"ul",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","go to dashboards management ",(0,r.kt)("a",{parentName:"li",href:"http://localhost:3000/dashboards"},(0,r.kt)("inlineCode",{parentName:"a"},"http://localhost:3000/dashboards")),"and\nclick ",(0,r.kt)("inlineCode",{parentName:"li"},"Nethermind"))),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(1666).Z,width:"899",height:"422"})),(0,r.kt)("ul",{className:"contains-task-list"},(0,r.kt)("li",{parentName:"ul",className:"task-list-item"},(0,r.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","you can now explore metrics and monitor your Nethermind node")),(0,r.kt)("p",null,(0,r.kt)("img",{src:n(5905).Z,width:"1821",height:"852"})),(0,r.kt)("h3",{id:"prometheus-pushgateway-and-grafana-sources"},"Prometheus, Pushgateway and Grafana sources"),(0,r.kt)("p",null,'{% embed url="',(0,r.kt)("a",{parentName:"p",href:"https://github.com/prometheus/prometheus%22"},'https://github.com/prometheus/prometheus"'),' caption="Prometheus GitHub" %}'),(0,r.kt)("p",null,'{% embed url="',(0,r.kt)("a",{parentName:"p",href:"https://github.com/prometheus/pushgateway%22"},'https://github.com/prometheus/pushgateway"'),' caption="Pushgateway GitHub" %}'),(0,r.kt)("p",null,'{% embed url="',(0,r.kt)("a",{parentName:"p",href:"https://github.com/grafana/grafana%22"},'https://github.com/grafana/grafana"'),' caption="Grafana GitHub" %}'))}u.isMDXComponent=!0},1666:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(26)-2e877f27155a67cfd995c39ff39d8604.png"},5905:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(29)-40080dde89bd64b9f96a5867aae82fa8.png"}}]); \ No newline at end of file diff --git a/assets/js/57295230.1a3106ab.js b/assets/js/57295230.1a3106ab.js new file mode 100644 index 000000000..047df17be --- /dev/null +++ b/assets/js/57295230.1a3106ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6879],{3905:(t,e,n)=>{n.d(e,{Zo:()=>f,kt:()=>u});var r=n(7294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function o(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){a(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function l(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n,r,a={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}var c=r.createContext({}),p=function(t){var e=r.useContext(c),n=e;return t&&(n="function"==typeof t?t(e):o(o({},e),t)),n},f=function(t){var e=p(t.components);return r.createElement(c.Provider,{value:e},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},m=r.forwardRef((function(t,e){var n=t.components,a=t.mdxType,i=t.originalType,c=t.parentName,f=l(t,["components","mdxType","originalType","parentName"]),s=p(n),m=a,u=s["".concat(c,".").concat(m)]||s[m]||d[m]||i;return n?r.createElement(u,o(o({ref:e},f),{},{components:n})):r.createElement(u,o({ref:e},f))}));function u(t,e){var n=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var c in e)hasOwnProperty.call(e,c)&&(l[c]=e[c]);l.originalType=t,l[s]="string"==typeof t?t:a,o[1]=l;for(var p=2;p<i;p++)o[p]=n[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},574:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const i={},o="Hive",l={unversionedId:"fundamentals/configuration/hive",id:"fundamentals/configuration/hive",title:"Hive",description:"These items need only be set when testing with Hive (Ethereum Foundation tool)",source:"@site/docs/02-fundamentals/04-configuration/hive.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/hive",permalink:"/docs/fundamentals/configuration/hive",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/hive.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"HealthChecks",permalink:"/docs/fundamentals/configuration/healthchecks"},next:{title:"Init",permalink:"/docs/fundamentals/configuration/init"}},c={},p=[],f={toc:p},s="wrapper";function d(t){let{components:e,...n}=t;return(0,a.kt)(s,(0,r.Z)({},f,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"hive"},"Hive"),(0,a.kt)("p",null,"These items need only be set when testing with Hive (Ethereum Foundation tool)"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"BlocksDir"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HIVECONFIG_BLOCKSDIR"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Path to a directory with additional blocks."),(0,a.kt)("td",{parentName:"tr",align:"left"},'"/blocks"')),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ChainFile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HIVECONFIG_CHAINFILE"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Path to a file with a test chain definition."),(0,a.kt)("td",{parentName:"tr",align:"left"},'"/chain.rlp"')),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HIVECONFIG_ENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Enabling hive for debugging purpose"),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"GenesisFilePath"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HIVECONFIG_GENESISFILEPATH"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Path to genesis block."),(0,a.kt)("td",{parentName:"tr",align:"left"},'"/genesis.json"')),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"KeysDir"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HIVECONFIG_KEYSDIR"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Path to a test key store directory."),(0,a.kt)("td",{parentName:"tr",align:"left"},'"/keys"')))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/59362658.c3dfb9a0.js b/assets/js/59362658.c3dfb9a0.js new file mode 100644 index 000000000..a32369381 --- /dev/null +++ b/assets/js/59362658.c3dfb9a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2267],{3905:(e,t,r)=>{r.d(t,{Zo:()=>i,kt:()=>f});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 a(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 s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=o.createContext({}),u=function(e){var t=o.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},i=function(e){var t=u(e.components);return o.createElement(c.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},b=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,i=l(e,["components","mdxType","originalType","parentName"]),p=u(r),b=n,f=p["".concat(c,".").concat(b)]||p[b]||m[b]||a;return r?o.createElement(f,s(s({ref:t},i),{},{components:r})):o.createElement(f,s({ref:t},i))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,s=new Array(a);s[0]=b;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:n,s[1]=l;for(var u=2;u<a;u++)s[u]=r[u];return o.createElement.apply(null,s)}return o.createElement.apply(null,r)}b.displayName="MDXCreateElement"},8642:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>u});var o=r(7462),n=(r(7294),r(3905));const a={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},s=void 0,l={permalink:"/blog/mdx-blog-post",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",formattedDate:"August 1, 2021",tags:[{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},c={authorsImageUrls:[void 0]},u=[],i={toc:u},p="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,o.Z)({},i,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Blog posts support ",(0,n.kt)("a",{parentName:"p",href:"https://docusaurus.io/docs/markdown-features"},"Docusaurus Markdown features"),", such as ",(0,n.kt)("a",{parentName:"p",href:"https://mdxjs.com/"},"MDX"),"."),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"Use the power of React to create interactive blog posts."),(0,n.kt)("pre",{parentName:"admonition"},(0,n.kt)("code",{parentName:"pre",className:"language-js"},'<button onClick={() => alert("button clicked!")}>Click me!</button>\n')),(0,n.kt)("button",{onClick:()=>alert("button clicked!")},"Click me!")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5bdddcf3.4640ea2f.js b/assets/js/5bdddcf3.4640ea2f.js new file mode 100644 index 000000000..04ed23e8a --- /dev/null +++ b/assets/js/5bdddcf3.4640ea2f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6682],{3905:(t,e,r)=>{r.d(e,{Zo:()=>p,kt:()=>c});var a=r(7294);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,a)}return r}function i(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?o(Object(r),!0).forEach((function(e){n(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function l(t,e){if(null==t)return{};var r,a,n=function(t,e){if(null==t)return{};var r,a,n={},o=Object.keys(t);for(a=0;a<o.length;a++)r=o[a],e.indexOf(r)>=0||(n[r]=t[r]);return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a<o.length;a++)r=o[a],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}var m=a.createContext({}),d=function(t){var e=a.useContext(m),r=e;return t&&(r="function"==typeof t?t(e):i(i({},e),t)),r},p=function(t){var e=d(t.components);return a.createElement(m.Provider,{value:e},t.children)},s="mdxType",f={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},N=a.forwardRef((function(t,e){var r=t.components,n=t.mdxType,o=t.originalType,m=t.parentName,p=l(t,["components","mdxType","originalType","parentName"]),s=d(r),N=n,c=s["".concat(m,".").concat(N)]||s[N]||f[N]||o;return r?a.createElement(c,i(i({ref:e},p),{},{components:r})):a.createElement(c,i({ref:e},p))}));function c(t,e){var r=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var o=r.length,i=new Array(o);i[0]=N;var l={};for(var m in e)hasOwnProperty.call(e,m)&&(l[m]=e[m]);l.originalType=t,l[s]="string"==typeof t?t:n,i[1]=l;for(var d=2;d<o;d++)i[d]=r[d];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}N.displayName="MDXCreateElement"},2398:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>m,contentTitle:()=>i,default:()=>f,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var a=r(7462),n=(r(7294),r(3905));const o={},i="Store module",l={unversionedId:"monitoring/metrics-explanation/store",id:"monitoring/metrics-explanation/store",title:"Store module",description:"| Metric Name | Description |",source:"@site/docs/04-monitoring/metrics-explanation/store.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/store",permalink:"/docs/monitoring/metrics-explanation/store",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/store.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Setting up local Metrics infrastructure",permalink:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture"},next:{title:"Trie",permalink:"/docs/monitoring/metrics-explanation/trie"}},m={},d=[],p={toc:d},s="wrapper";function f(t){let{components:e,...r}=t;return(0,n.kt)(s,(0,a.Z)({},p,r,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"store-module"},"Store module"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Metric Name"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockInfosDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Block Infos DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlockInfosDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Block Infos DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlocksDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Blocks DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlocksDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Blocks DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BloomDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Bloom DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BloomDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Bloom DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CHTDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of CHT DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CHTDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of CHT DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CodeDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Code DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"CodeDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Code DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"HeaderDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Headers DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"HeaderDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Headers DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"OtherDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of other DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"OtherDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of other DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"PendingTxsDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Pending Tx DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"PendingTxsDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Pending Tx DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"ReceiptsDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Receipts DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"ReceiptsDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Receipts DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StateDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of State DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StateDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of State DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StateTreeReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of State Trie reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StateTreeWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Blocks Trie writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StorageTreeReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of storge trie reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"StorageTreeWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of storage trie writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"WitnessDbReads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Witness DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"WitnessDbWrites"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Witness DB writes.")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5cdd2ffd.d677d377.js b/assets/js/5cdd2ffd.d677d377.js new file mode 100644 index 000000000..7f7fbe4df --- /dev/null +++ b/assets/js/5cdd2ffd.d677d377.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1544],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>c});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),d=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=d(e.components);return n.createElement(o.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,o=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),m=d(a),k=r,c=m["".concat(o,".").concat(k)]||m[k]||u[k]||l;return a?n.createElement(c,i(i({ref:t},s),{},{components:a})):n.createElement(c,i({ref:t},s))}));function c(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=k;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p[m]="string"==typeof e?e:r,i[1]=p;for(var d=2;d<l;d++)i[d]=a[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}k.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:a,className:i}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>q});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),p=a(6550),o=a(1980),d=a(7392),s=a(12);function m(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function u(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??m(a);return function(e){const t=(0,d.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function k(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function c(e){let{queryString:t=!1,groupId:a}=e;const n=(0,p.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,o._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function h(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=u(e),[i,p]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!k({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[o,d]=c({queryString:a,groupId:n}),[m,h]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,s.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),g=(()=>{const e=o??m;return k({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{g&&p(g)}),[g]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!k({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);p(e),d(e),h(e)}),[d,h,l]),tabValues:l}}var g=a(2389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:t,block:a,selectedValue:p,selectValue:o,tabValues:d}=e;const s=[],{blockElementScrollPositionUntilNextRender:m}=(0,i.o5)(),u=e=>{const t=e.currentTarget,a=s.indexOf(t),n=d[a].value;n!==p&&(m(t),o(n))},k=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const a=s.indexOf(e.currentTarget)+1;t=s[a]??s[0];break}case"ArrowLeft":{const a=s.indexOf(e.currentTarget)-1;t=s[a]??s[s.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},d.map((e=>{let{value:t,label:a,attributes:i}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:p===t?0:-1,"aria-selected":p===t,key:t,ref:e=>s.push(e),onKeyDown:k,onClick:u},i,{className:(0,l.Z)("tabs__item",N.tabItem,i?.className,{"tabs__item--active":p===t})}),a??t)})))}function f(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=h(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",N.tabList)},r.createElement(b,(0,n.Z)({},e,t)),r.createElement(f,(0,n.Z)({},e,t)))}function q(e){const t=(0,g.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},3332:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>p,metadata:()=>d,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const p={},o="clique",d={unversionedId:"nethermind-utilities/cli/clique",id:"nethermind-utilities/cli/clique",title:"clique",description:"clique.discard",source:"@site/docs/06-nethermind-utilities/cli/clique.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/clique",permalink:"/docs/nethermind-utilities/cli/clique",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/clique.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/docs/nethermind-utilities/cli/admin"},next:{title:"debug",permalink:"/docs/nethermind-utilities/cli/debug"}},s={},m=[{value:"clique.discard",id:"cliquediscard",level:2},{value:"clique.getBlockSigner",id:"cliquegetblocksigner",level:2},{value:"clique.getSigners",id:"cliquegetsigners",level:2},{value:"clique.getSignersAnnotated",id:"cliquegetsignersannotated",level:2},{value:"clique.getSignersAtHash",id:"cliquegetsignersathash",level:2},{value:"clique.getSignersAtHashAnnotated",id:"cliquegetsignersathashannotated",level:2},{value:"clique.getSignersAtNumber",id:"cliquegetsignersatnumber",level:2},{value:"clique.getSnapshot",id:"cliquegetsnapshot",level:2},{value:"clique.getSnapshotAtHash",id:"cliquegetsnapshotathash",level:2},{value:"clique.produceBlock",id:"cliqueproduceblock",level:2},{value:"clique.propose",id:"cliquepropose",level:2}],u={toc:m},k="wrapper";function c(e){let{components:t,...a}=e;return(0,r.kt)(k,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"clique"},"clique"),(0,r.kt)("h2",{id:"cliquediscard"},"clique.discard"),(0,r.kt)("p",null,"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the\naddress."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.discard(signer)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"signer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.discard"',title:'"Example',request:!0,of:!0,'clique.discard"':!0},"clique.discard(signer)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_discard"},"See also JSON RPC clique_discard")),(0,r.kt)("h2",{id:"cliquegetblocksigner"},"clique.getBlockSigner"),(0,r.kt)("p",null,"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.getBlockSigner(hash)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.getBlockSigner"',title:'"Example',request:!0,of:!0,'clique.getBlockSigner"':!0},"clique.getBlockSigner(hash)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_getblocksigner"},"See also JSON RPC clique_getBlockSigner")),(0,r.kt)("h2",{id:"cliquegetsigners"},"clique.getSigners"),(0,r.kt)("p",null,"Retrieves the list of authorized signers."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.getSigners()"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.getSigners"',title:'"Example',request:!0,of:!0,'clique.getSigners"':!0},"clique.getSigners()\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_getsigners"},"See also JSON RPC clique_getSigners")),(0,r.kt)("h2",{id:"cliquegetsignersannotated"},"clique.getSignersAnnotated"),(0,r.kt)("p",null,"Retrieves the list of authorized signers but with signer names instead of addresses"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.getSignersAnnotated()"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.getSignersAnnotated"',title:'"Example',request:!0,of:!0,'clique.getSignersAnnotated"':!0},"clique.getSignersAnnotated()\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_getsignersannotated"},"See also JSON RPC clique_getSignersAnnotated")),(0,r.kt)("h2",{id:"cliquegetsignersathash"},"clique.getSignersAtHash"),(0,r.kt)("p",null,"Retrieves the list of authorized signers at the specified block by hash."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.getSignersAtHash(hash)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.getSignersAtHash"',title:'"Example',request:!0,of:!0,'clique.getSignersAtHash"':!0},"clique.getSignersAtHash(hash)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_getsignersathash"},"See also JSON RPC clique_getSignersAtHash")),(0,r.kt)("h2",{id:"cliquegetsignersathashannotated"},"clique.getSignersAtHashAnnotated"),(0,r.kt)("p",null,"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.getSignersAtHashAnnotated(hash)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.getSignersAtHashAnnotated"',title:'"Example',request:!0,of:!0,'clique.getSignersAtHashAnnotated"':!0},"clique.getSignersAtHashAnnotated(hash)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_getsignersathashannotated"},"See also JSON RPC clique_getSignersAtHashAnnotated")),(0,r.kt)("h2",{id:"cliquegetsignersatnumber"},"clique.getSignersAtNumber"),(0,r.kt)("p",null,"Retrieves the list of authorized signers at the specified block by block number."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.getSignersAtNumber(number)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.getSignersAtNumber"',title:'"Example',request:!0,of:!0,'clique.getSignersAtNumber"':!0},"clique.getSignersAtNumber(number)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_getsignersatnumber"},"See also JSON RPC clique_getSignersAtNumber")),(0,r.kt)("h2",{id:"cliquegetsnapshot"},"clique.getSnapshot"),(0,r.kt)("p",null,"Retrieves a snapshot of all clique state at a given block."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.getSnapshot()"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Snapshot object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"clique.getSnapshot()\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Snapshot")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signers"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SignerLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_getsnapshot"},"See also JSON RPC clique_getSnapshot")),(0,r.kt)("h2",{id:"cliquegetsnapshotathash"},"clique.getSnapshotAtHash"),(0,r.kt)("p",null,"Retrieves the state snapshot at a given block."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.getSnapshotAtHash(hash)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Snapshot object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"clique.getSnapshotAtHash(hash)\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Snapshot")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signers"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SignerLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_getsnapshotathash"},"See also JSON RPC clique_getSnapshotAtHash")),(0,r.kt)("h2",{id:"cliqueproduceblock"},"clique.produceBlock"),(0,r.kt)("p",null,"Forces Clique block producer to produce a new block"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.produceBlock(parentHash)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"parentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.produceBlock"',title:'"Example',request:!0,of:!0,'clique.produceBlock"':!0},"clique.produceBlock(parentHash)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_produceblock"},"See also JSON RPC clique_produceBlock")),(0,r.kt)("h2",{id:"cliquepropose"},"clique.propose"),(0,r.kt)("p",null,"Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.kt)("inlineCode",{parentName:"p"},"vote")," parameter is true, the\nlocal signer votes for the given address to be included in the set of authorized signers. With ",(0,r.kt)("inlineCode",{parentName:"p"},"vote")," set to false, the\nsigner is against the address."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"clique.propose(signer, vote)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"signer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"vote"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of clique.propose"',title:'"Example',request:!0,of:!0,'clique.propose"':!0},"clique.propose(signer, vote)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/clique#clique_propose"},"See also JSON RPC clique_propose")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/608ae6a4.54822b6c.js b/assets/js/608ae6a4.54822b6c.js new file mode 100644 index 000000000..32445f25a --- /dev/null +++ b/assets/js/608ae6a4.54822b6c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6938],{4545:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/docusaurus","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/62282da9.cf30d64c.js b/assets/js/62282da9.cf30d64c.js new file mode 100644 index 000000000..d3e34a14c --- /dev/null +++ b/assets/js/62282da9.cf30d64c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7010],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),s=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=s(e.components);return n.createElement(i.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,i=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),d=s(a),m=r,k=d["".concat(i,".").concat(m)]||d[m]||u[m]||l;return a?n.createElement(k,o(o({ref:t},c),{},{components:a})):n.createElement(k,o({ref:t},c))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=m;var p={};for(var i in t)hasOwnProperty.call(t,i)&&(p[i]=t[i]);p.originalType=e,p[d]="string"==typeof e?e:r,o[1]=p;for(var s=2;s<l;s++)o[s]=a[s];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>o});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:a,className:o}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(7462),r=a(7294),l=a(6010),o=a(2466),p=a(6550),i=a(1980),s=a(7392),c=a(12);function d(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function u(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??d(a);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function k(e){let{queryString:t=!1,groupId:a}=e;const n=(0,p.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,i._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function b(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=u(e),[o,p]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[i,s]=k({queryString:a,groupId:n}),[d,b]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,c.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),h=(()=>{const e=i??d;return m({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{h&&p(h)}),[h]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);p(e),s(e),b(e)}),[s,b,l]),tabValues:l}}var h=a(2389);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function N(e){let{className:t,block:a,selectedValue:p,selectValue:i,tabValues:s}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.o5)(),u=e=>{const t=e.currentTarget,a=c.indexOf(t),n=s[a].value;n!==p&&(d(t),i(n))},m=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const a=c.indexOf(e.currentTarget)+1;t=c[a]??c[0];break}case"ArrowLeft":{const a=c.indexOf(e.currentTarget)-1;t=c[a]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},s.map((e=>{let{value:t,label:a,attributes:o}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:p===t?0:-1,"aria-selected":p===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:u},o,{className:(0,l.Z)("tabs__item",f.tabItem,o?.className,{"tabs__item--active":p===t})}),a??t)})))}function y(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function g(e){const t=b(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",f.tabList)},r.createElement(N,(0,n.Z)({},e,t)),r.createElement(y,(0,n.Z)({},e,t)))}function v(e){const t=(0,h.Z)();return r.createElement(g,(0,n.Z)({key:String(t)},e))}},3556:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>k,frontMatter:()=>p,metadata:()=>s,toc:()=>d});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),o=a(5162);const p={},i="personal",s={unversionedId:"interacting-with-nethermind/json-rpc-api/personal",id:"interacting-with-nethermind/json-rpc-api/personal",title:"personal",description:"personal_importRawKey",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/personal.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/personal",permalink:"/docs/interacting-with-nethermind/json-rpc-api/personal",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/personal.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/docs/interacting-with-nethermind/json-rpc-api/parity"},next:{title:"proof",permalink:"/docs/interacting-with-nethermind/json-rpc-api/proof"}},c={},d=[{value:"personal_importRawKey",id:"personal_importrawkey",level:2},{value:"personal_listAccounts",id:"personal_listaccounts",level:2},{value:"personal_lockAccount",id:"personal_lockaccount",level:2},{value:"personal_newAccount",id:"personal_newaccount",level:2},{value:"personal_unlockAccount",id:"personal_unlockaccount",level:2}],u={toc:d},m="wrapper";function k(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"personal"},"personal"),(0,r.kt)("h2",{id:"personal_importrawkey"},"personal_importRawKey"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"personal_importRawKey","params":[keyData, passphrase]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"keyData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"passphrase"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"personal_importRawKey","params":[keyData, passphrase],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x707fc13c0eb628c074f7ff514ae21acaee0ec072,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/personal#personal-importrawkey"},"See also CLI personal.importRawKey")),(0,r.kt)("h2",{id:"personal_listaccounts"},"personal_listAccounts"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"personal_listAccounts","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"personal_listAccounts","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": ["0x247b5f5f007fb5d50de13cfcbd4460db21c12bcb","0x707fc13c0eb628c074f7ff514ae21acaee0ec072"],\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/personal#personal-listaccounts"},"See also CLI personal.listAccounts")),(0,r.kt)("h2",{id:"personal_lockaccount"},"personal_lockAccount"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"personal_lockAccount","params":[address]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"personal_lockAccount","params":[707Fc13C0eB628c074f7ff514Ae21ACaeE0ec072],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": true,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/personal#personal-lockaccount"},"See also CLI personal.lockAccount")),(0,r.kt)("h2",{id:"personal_newaccount"},"personal_newAccount"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"personal_newAccount","params":[passphrase]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"passphrase"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"personal_newAccount","params":[testPass],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0xfb06d31473545b0e0d62a24e02b266e08523c6a9,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/personal#personal-newaccount"},"See also CLI personal.newAccount")),(0,r.kt)("h2",{id:"personal_unlockaccount"},"personal_unlockAccount"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"personal_unlockAccount","params":[address, passphrase]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"passphrase"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"personal_unlockAccount","params":[address, passphrase],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": true,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/personal#personal-unlockaccount"},"See also CLI personal.unlockAccount")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/64f637cf.46ee1a3b.js b/assets/js/64f637cf.46ee1a3b.js new file mode 100644 index 000000000..2d2ef543a --- /dev/null +++ b/assets/js/64f637cf.46ee1a3b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5147],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>m});var i=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,i,r=function(e,n){if(null==e)return{};var t,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)t=a[i],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)t=a[i],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=i.createContext({}),u=function(e){var n=i.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=u(e.components);return i.createElement(s.Provider,{value:n},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},h=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=u(t),h=r,m=p["".concat(s,".").concat(h)]||p[h]||c[h]||a;return t?i.createElement(m,o(o({ref:n},d),{},{components:t})):i.createElement(m,o({ref:n},d))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,o=new Array(a);o[0]=h;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var u=2;u<a;u++)o[u]=t[u];return i.createElement.apply(null,o)}return i.createElement.apply(null,t)}h.displayName="MDXCreateElement"},9818:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>l,toc:()=>u});var i=t(7462),r=(t(7294),t(3905));const a={description:"Explanation of Full Pruning, including its requirements and steps to execute it."},o="Full Pruning",l={unversionedId:"fundamentals/how-to-reduce-database-size/full-pruning",id:"fundamentals/how-to-reduce-database-size/full-pruning",title:"Full Pruning",description:"Explanation of Full Pruning, including its requirements and steps to execute it.",source:"@site/docs/02-fundamentals/08-how-to-reduce-database-size/full-pruning.md",sourceDirName:"02-fundamentals/08-how-to-reduce-database-size",slug:"/fundamentals/how-to-reduce-database-size/full-pruning",permalink:"/docs/fundamentals/how-to-reduce-database-size/full-pruning",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/08-how-to-reduce-database-size/full-pruning.md",tags:[],version:"current",frontMatter:{description:"Explanation of Full Pruning, including its requirements and steps to execute it."},sidebar:"tutorialSidebar",previous:{title:"How to reduce database size",permalink:"/docs/fundamentals/how-to-reduce-database-size/"},next:{title:"Resync database from scratch",permalink:"/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch"}},s={},u=[{value:"Overview",id:"overview",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Preparation for Full Pruning",id:"preparation-for-full-pruning",level:2},{value:"How to configure Full Pruning",id:"how-to-configure-full-pruning",level:2},{value:"Manual trigger",id:"manual-trigger",level:3},{value:"Size of state database",id:"size-of-state-database",level:3},{value:"Free disk space left on machine",id:"free-disk-space-left-on-machine",level:3},{value:"Monitoring progress of Full Pruning",id:"monitoring-progress-of-full-pruning",level:2},{value:"Additional settings",id:"additional-settings",level:2},{value:"FullPruningMemoryBudgetMb",id:"fullpruningmemorybudgetmb",level:3},{value:"FullPruningCompletionBehavior",id:"fullpruningcompletionbehavior",level:3},{value:"FullPruningMaxDegreeOfParallelism",id:"fullpruningmaxdegreeofparallelism",level:3},{value:"Side notes",id:"side-notes",level:2}],d={toc:u},p="wrapper";function c(e){let{components:n,...t}=e;return(0,r.kt)(p,(0,i.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"full-pruning"},"Full Pruning"),(0,r.kt)("h2",{id:"overview"},"Overview"),(0,r.kt)("p",null,"Full Pruning pertains to the elimination or cleanup of obsolete historical data to optimize disk space. Clients are\nresponsible for maintaining the world state, which comprises a database that portrays the current Ethereum network\nstatus. The world state encompasses accounts, contracts, and other information."),(0,r.kt)("p",null,"The goal of Full Pruning is to reduce disk requirements by storing only the current world state and removing historical\ndata. This differs from archive nodes that retain complete transaction and state history. Full Pruning is useful for\nusers who don't require historical data and prefer to interact solely with the current state of the network. However,\nFull Pruning may limit the client's ability to fulfill requests that depend on historical information."),(0,r.kt)("h2",{id:"how-it-works"},"How it works"),(0,r.kt)("p",null,"During synchronization using the Snap Sync method, the Nethermind client produces a local copy of the Ethereum Network\nstate, which typically amounts to approximately 160 GB (state database). Entire database may rise up to 600-650GB.\nAlthough this size increases by around 30 GB each week, certain historical data is retained that is not necessary for\nnode operation or to maintain a current Ethereum state."),(0,r.kt)("p",null,"When Full Pruning is activated and initiated, it conducts a thorough examination of the entire state tree to determine\nwhich data is no longer required and can be treated as historical. It then determines which information corresponds to\nthe current state, and duplicates it alongside the existing version. During verification of each node in the state, the\nnew pruned state replaces the previous one. Once the verifier confirms that everything is functioning correctly, the old\nstate database is eliminated, resulting in significant disk space savings. As a result, the size of the database will be\nclose to its initial size again."),(0,r.kt)("h2",{id:"preparation-for-full-pruning"},"Preparation for Full Pruning"),(0,r.kt)("p",null,"Because Full Pruning is executed while the node is connected to the network, it can affect the performance of the node.\nThe process can consume significant amounts of RAM, CPU, and disk resources, which can impact block processing time.\nThis, in turn, can lead to reduced rewards for Validator setups, particularly for PoS chains."),(0,r.kt)("p",null,"Currently, Full Pruning takes between 20 to 30 hours to complete, although the duration may vary based on the user's\nhardware configuration. To ensure that the process runs smoothly, a minimum of 200 GB of free disk space is required.\nHowever, it's recommended to have at least 300 GB or more of free disk space."),(0,r.kt)("p",null,"Do not enable Full Pruning on an Archive node, as these are two opposing features. Archive nodes are designed to store\ncomplete historical data, whereas Full Pruning eliminates it. To ensure that Pruning.Mode is disabled for\nboth ",(0,r.kt)("inlineCode",{parentName:"p"},"InMemory")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Full"),", set the flag ",(0,r.kt)("inlineCode",{parentName:"p"},"Pruning.Mode=None"),"."),(0,r.kt)("h2",{id:"how-to-configure-full-pruning"},"How to configure Full Pruning"),(0,r.kt)("p",null,"As a very first point please review a Pruning configuration options from this documentation\npage: ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/configuration/pruning"},"pruning.md"),"."),(0,r.kt)("p",null,"To activate the Full Pruning feature, you must set either the ",(0,r.kt)("inlineCode",{parentName:"p"},"Pruning.Mode=Hybrid")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"Pruning.Mode=Full")," flag for your\nnode."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Setting ",(0,r.kt)("inlineCode",{parentName:"p"},"Pruning.Mode=Hybrid")," enables both ",(0,r.kt)("inlineCode",{parentName:"p"},"InMemory")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Full")," modes. ",(0,r.kt)("inlineCode",{parentName:"p"},"InMemory")," mode helps the node grow at a slower\nrate compared to ",(0,r.kt)("inlineCode",{parentName:"p"},"Pruning.Mode=Full"),". With this configuration, Full Pruning is executed less frequently, promoting\nhealthier disk operation. Since Full Pruning is hardware-intensive, this configuration is also beneficial for\nattestation results.")),(0,r.kt)("p",null,"The next step is to determine the trigger conditions for Full Pruning. Currently, there are three options available:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Manual"),(0,r.kt)("li",{parentName:"ol"},"Size of state database"),(0,r.kt)("li",{parentName:"ol"},"Amount of free disk space")),(0,r.kt)("p",null,"Below is a brief explanation of each option."),(0,r.kt)("h3",{id:"manual-trigger"},"Manual trigger"),(0,r.kt)("p",null,"Manual mode enables Full Pruning to be triggered only upon request, providing full control over this functionality. To\nconfigure this mode, add the following flags to your node: ",(0,r.kt)("inlineCode",{parentName:"p"},"--Pruning.Mode=Hybrid --Pruning.FullPruningTrigger=Manual"),"."),(0,r.kt)("p",null,"Additionally, you can add an Admin module to your JsonRPC to\nexecute ",(0,r.kt)("a",{parentName:"p",href:"/docs/interacting-with-nethermind/json-rpc-api/admin#admin_prune"},"#admin","_","prune")," command. Here's how\nto do it:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"Admin")," module to ",(0,r.kt)("inlineCode",{parentName:"li"},"EnabledModules")," on current JsonRpc port (below example - append Admin as last value if you are\noverriding it already):\\\n",(0,r.kt)("inlineCode",{parentName:"li"},"JsonRpc.EnabledModules=[Eth, Subscribe, Trace, TxPool, Web3, Personal, Proof, Net, Parity, Health, Rpc, Admin]")),(0,r.kt)("li",{parentName:"ol"},"Create a separate port only for ",(0,r.kt)("inlineCode",{parentName:"li"},"Admin")," module:\\\n",(0,r.kt)("inlineCode",{parentName:"li"},"JsonRpc.AdditionalRpcUrls=http://127.0.0.1:8555|http|admin"))),(0,r.kt)("p",null,"Now restart a node and if everything is properly configured, you should be able to\ntrigger ",(0,r.kt)("a",{parentName:"p",href:"/docs/interacting-with-nethermind/json-rpc-api/admin#admin_prune"},"#admin","_","prune")," command and Full\nPruning should\nbe started."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"One potential disadvantage of Manual mode is that if Full Pruning is not triggered in time (due to insufficient disk\nspace), it cannot be executed. In such cases, the only option to free up disk space would be to resync the node from\nscratch.")),(0,r.kt)("h3",{id:"size-of-state-database"},"Size of state database"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"StateDbSize")," mode enables Full Pruning to be triggered automatically when the state database reaches a specified size.\nTo enable this mode, add the following\nflags: ",(0,r.kt)("inlineCode",{parentName:"p"},"--Pruning.Mode=Hybrid --Pruning.FullPruningTrigger=StateDbSize --Pruning.FullPruningThresholdMb=256000"),", where\n256000 should be set based on current requirements."),(0,r.kt)("p",null,"With this configuration, Full Pruning will be triggered automatically whenever the state database size exceeds 256000\nMB (250 GB). Since the state database initially has around 160 GB, pruning will be triggered when the database size\ngrows beyond 90 GB."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"To avoid unexpected behavior and ensure that Full Pruning can be completed in full, it's recommended to set the\nthreshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that there\nis sufficient free disk space available for the Full Pruning process.")),(0,r.kt)("h3",{id:"free-disk-space-left-on-machine"},"Free disk space left on machine"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"This is a recommended approach as it ensures, that pruning will be executed on time")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"VolumeFreeSpace")," mode allows Full Pruning to be triggered when the amount of free disk space reaches a selected\nminimum. To enable this mode, add the following\nflags: ",(0,r.kt)("inlineCode",{parentName:"p"},"--Pruning.Mode=Hybrid --Pruning.FullPruningTrigger=VolumeFreeSpace--Pruning.FullPruningThresholdMb=256000"),",\nwhere 256000 should be set based on current requirements. However, it should never be set below the default value of"),(0,r.kt)("ol",{start:256e3},(0,r.kt)("li",{parentName:"ol"})),(0,r.kt)("p",null,"This configuration will trigger Full Pruning whenever the amount of free disk space drops to 250 GB. This ensures that\npruning is invoked as infrequently as possible while also ensuring that there is always sufficient free space available\nto trigger it."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"It's recommended not to set the value below 250 GB for stability reasons. In reality, Full Pruning should require\napproximately the same amount of space as a fresh state database (around 160 GB), but it also needs a threshold for\nprocessing and other operations since it creates a copy of the existing state database. Therefore, it's essential to\nmaintain a minimum amount of free disk space to ensure stable and reliable pruning performance.")),(0,r.kt)("h2",{id:"monitoring-progress-of-full-pruning"},"Monitoring progress of Full Pruning"),(0,r.kt)("p",null,"When Full Pruning is triggered correctly, several messages will be visible in the logs of the Nethermind process."),(0,r.kt)("p",null,"Very first ones should be:"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Full Pruning Ready to start: pruning garbage before state BLOCK","_","NUMBER with root ROOT","_","HASH.\\\n",(0,r.kt)("strong",{parentName:"p"},"WARN"),": Full Pruning Started on root hash ROOT","_","HASH: do not close the node until finished or progress will be lost.")),(0,r.kt)("p",null,"From that moment ensure that no restarts will be performed on a node to ensure that Full pruning will be done properly.\nAfter few minutes first logs with progress would start to appear:"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\\\nFull Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\\\nFull Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.")),(0,r.kt)("p",null,"Pruning may take even ",(0,r.kt)("strong",{parentName:"p"},"more than 30 hours")," (this depends on CPU and IO operations on disk)."),(0,r.kt)("p",null,"Whenever pruning will be completed, there will be a log message:"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.")),(0,r.kt)("p",null,"As you can notice, on this example it took around 15 hours."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Since the amount of mirrored nodes is not a static value, it's not possible to provide a simple progress indicator in\npercentage. Therefore, the approximate value given should be used to determine when Full Pruning is expected to be\ncompleted.")),(0,r.kt)("h2",{id:"additional-settings"},"Additional settings"),(0,r.kt)("h3",{id:"fullpruningmemorybudgetmb"},"FullPruningMemoryBudgetMb"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"FullPruningMemoryBudgetMb")," configuration parameter controls the memory budget allocated for the trie visit during\nthe full pruning process. By increasing this value, the number of required read IOPS (Input/Output Operations Per\nSecond) can be significantly reduced, which results in a faster full pruning operation. However, this improvement comes\nat the expense of increased RAM usage.\\\n\\\nAssuming your system has a total of 64GB of RAM, with the application, CL client, and system expenses consuming 20GB,\nyou need to determine the maximum value for ",(0,r.kt)("inlineCode",{parentName:"p"},"FullPruningMemoryBudgetMb")," while ensuring that the system remains stable\nand respecting the given limit."),(0,r.kt)("p",null,"In this case, you have 44GB (64GB - 20GB) of available RAM for increasing the ",(0,r.kt)("inlineCode",{parentName:"p"},"FullPruningMemoryBudgetMb")," value. To\ncalculate the maximum value in megabytes, multiply the available RAM by 1024 (since 1GB = 1024MB):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"44GB * 1024MB/GB = 45056MB\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Setting the ",(0,r.kt)("inlineCode",{parentName:"p"},"FullPruningMemoryBudgetMb")," value higher than 16GB may not provide any additional performance benefits.")),(0,r.kt)("p",null,"However, there is a recommendation that the value of ",(0,r.kt)("inlineCode",{parentName:"p"},"FullPruningMemoryBudgetMb")," should not be higher than 16GB. So,\nconsidering this guideline, you can set the ",(0,r.kt)("inlineCode",{parentName:"p"},"FullPruningMemoryBudgetMb")," value to a maximum of 16GB, which is equivalent\nto:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"16GB * 1024MB/GB = 16384MB\n")),(0,r.kt)("p",null,"To apply this value, update the configuration file as follows:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Pruning.FullPruningMemoryBudgetMb=16384\n")),(0,r.kt)("p",null,"Please note that this example assumes that the remaining 44GB of RAM is sufficient for the full pruning memory budget.\nDepending on the specific use case and system requirements, it may be necessary to further adjust the value to optimize\nperformance and resource usage."),(0,r.kt)("h3",{id:"fullpruningcompletionbehavior"},"FullPruningCompletionBehavior"),(0,r.kt)("p",null,"This setting determines the behavior of the node after Full Pruning has completed. By default, the node will continue to\nprogress as usual. However, if the user wishes to shut down the node after Full Pruning has completed, there are two\noptions available:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"None"),": No special action will be taken."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"ShutdownOnSuccess"),": Nethermind will shut down if the Full Pruning process is successful."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"AlwaysShutdown"),": Nethermind will shut down once Full Pruning completes, regardless of whether it succeeded or\nfailed.")),(0,r.kt)("h3",{id:"fullpruningmaxdegreeofparallelism"},"FullPruningMaxDegreeOfParallelism"),(0,r.kt)("p",null,"This setting determines the number of parallel tasks and threads that can be used by Full Pruning:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"0: the number of logical processors"),(0,r.kt)("li",{parentName:"ol"},"1: Full Pruning will run on a single thread.")),(0,r.kt)("p",null,"The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or Validator\nnode), it's recommended to use a value below the number of logical processors. If the node doesn't have many other\nresponsibilities but needs to reliably follow the chain without delays and produce live logs, the default value is\nrecommended. If the node doesn't need to be responsive, has very fast I/O (such as NVME), and the shortest pruning time\nis desired, this can be set to 2-3 times the number of logical processors."),(0,r.kt)("h2",{id:"side-notes"},"Side notes"),(0,r.kt)("p",null,"During the Full Pruning process, several things should be kept in mind:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Full Pruning is a very heavy task, but it's performed in the background, so the node continues to progress and follow\nthe chain."),(0,r.kt)("li",{parentName:"ol"},"Due to the heaviness of the task, it may affect validator rewards effectiveness, but since it's executed only once\nevery few months, it shouldn't have a significant impact on overall results (we've experienced approximately 5-10%\nloss of rewards during Full Pruning)."),(0,r.kt)("li",{parentName:"ol"},"Ensure that your disk has at least 250 GB of free space after syncing the node. Otherwise, Full Pruning will never\ncomplete successfully."),(0,r.kt)("li",{parentName:"ol"},"Several things can be done to reduce the size of the database after syncing (such as setting AncientBarriers to a\nproper value higher than 0, using CL which requires less disk space, and setting logs to the lowest level to avoid\nlog spamming).")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6613fd3b.3c29b1a2.js b/assets/js/6613fd3b.3c29b1a2.js new file mode 100644 index 000000000..867ef5350 --- /dev/null +++ b/assets/js/6613fd3b.3c29b1a2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6224],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>_});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),m=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):d(d({},t),e)),n},l=function(e){var t=m(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},N=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,l=o(e,["components","mdxType","originalType","parentName"]),c=m(n),N=a,_=c["".concat(s,".").concat(N)]||c[N]||p[N]||i;return n?r.createElement(_,d(d({ref:t},l),{},{components:n})):r.createElement(_,d({ref:t},l))}));function _(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,d=new Array(i);d[0]=N;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:a,d[1]=o;for(var m=2;m<i;m++)d[m]=n[m];return r.createElement.apply(null,d)}return r.createElement.apply(null,n)}N.displayName="MDXCreateElement"},3478:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>d,default:()=>p,frontMatter:()=>i,metadata:()=>o,toc:()=>m});var r=n(7462),a=(n(7294),n(3905));const i={},d="Network",o={unversionedId:"monitoring/metrics-explanation/network",id:"monitoring/metrics-explanation/network",title:"Network",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/network.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/network",permalink:"/docs/monitoring/metrics-explanation/network",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/network.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Mev",permalink:"/docs/monitoring/metrics-explanation/mev"},next:{title:"Runner module",permalink:"/docs/monitoring/metrics-explanation/runner"}},s={},m=[],l={toc:m},c="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"network"},"Network"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_already_connected_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to already connected")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_breach_of_protocol_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to breach of protocol")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_client_quitting_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to client quitting")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_disconnect_requested_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to disconnect requested")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth62_block_bodies_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.62 BlockBodies messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth62_block_headers_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.62 BlockHeaders messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth62_get_block_bodies_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.62 GetBlockBodies messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth62_get_block_headers_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.62 GetBlockHeaders messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth62_new_block_hashes_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.62 NewBlockHashes messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth62_new_block_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.62 NewBlock messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth62_transactions_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.62 Transactions messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth63_get_node_data_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.63 GetNodeData messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth63_get_receipts_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.63 GetReceipts messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth63_node_data_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.63 NodeData messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth63_receipts_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.63 Receipts messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth65_get_pooled_transactions_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.65 GetPooledTransactions messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth65_get_pooled_transactions_requested"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.65 GetPooledTransactions messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth65_new_pooled_transaction_hashes_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.65 NewPooledTransactionHashes messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth65_new_pooled_transaction_hashes_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.65 NewPooledTransactionHashes messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth65_pooled_transactions_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.65 PooledTransactions messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_block_bodies_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 BlockBodies messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_block_headers_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 BlockHeaders messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_get_block_bodies_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 GetBlockBodies messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_get_block_headers_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 GetBlockHeaders messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_get_node_data_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 GetNodeData messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_get_pooled_transactions_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 GetPooledTransactions messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_get_pooled_transactions_requested"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 GetPooledTransactions messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_get_receipts_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 GetReceipts messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_node_data_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 NodeData messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_pooled_transactions_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 PooledTransactions messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth66_receipts_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.66 Receipts messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth68_new_pooled_transaction_hashes_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.68 NewPooledTransactionHashes messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_eth68_new_pooled_transaction_hashes_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth.68 NewPooledTransactionHashes messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_handshakes"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of devp2p handshakes")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_handshake_timeouts"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of devp2p handshke timeouts")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_hellos_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of devp2p hello messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_hellos_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of devp2p hello messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_incoming_connections"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of incoming connection.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_incompatible_p2_p_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to incompatible devp2p version")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_les_statuses_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of les status messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_les_statuses_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of les status messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_already_connected_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to already connected")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_breach_of_protocol_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of sent disconnects due to breach of protocol")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_client_quitting_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to client quitting")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_disconnect_requested_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to disconnect requested")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_disconnects_total"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of local disconnects")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_incompatible_p2_p_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to incompatible devp2p")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_null_node_identity_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to missing node identity")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_other_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to other reason")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_receive_message_timeout_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to request timeout")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_same_as_self_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to connection to self")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_tcp_subsystem_error_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to TCP error")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_too_many_peers_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to breach of protocol")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_unexpected_identity_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of initiated disconnects due to node identity info mismatch")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_local_useless_peer_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of sent disconnects due to useless peer")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_null_node_identity_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to missing peer identity")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_other_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to other reasons")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_outgoing_connections"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of outgoing connection.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_peer_limit"),(0,a.kt)("td",{parentName:"tr",align:"left"},"The maximum number of peers this node allows to connect.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_receive_message_timeout_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to request timeouts")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_remote_disconnects_total"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of remote disconnects")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_same_as_self_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to connecting to self")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_account_range_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP AccountRange messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_byte_codes_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP ByteCodes messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_get_account_range_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP GetAccountRange messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_get_account_range_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP GetAccountRange messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_get_byte_codes_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP GetByteCodes messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_get_byte_codes_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP GetByteCodes messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_get_storage_ranges_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP GetStorageRanges messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_get_storage_ranges_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP GetStorageRanges messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_get_trie_nodes_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP GetTrieNodes messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_get_trie_nodes_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP GetTrieNodes messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_storage_ranges_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP StorageRanges messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snap_trie_nodes_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SNAP TrieNodes messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_statuses_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth status messages received")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_statuses_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of eth status messages sent")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_tcp_subsystem_error_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of disconnects due to TCP error")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_too_many_peers_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to too many peers")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_unexpected_identity_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to peer identity information mismatch")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_useless_peer_disconnects"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of received disconnects due to useless peer")))))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/66406991.8dcbcfde.js b/assets/js/66406991.8dcbcfde.js new file mode 100644 index 000000000..a8a1e78c7 --- /dev/null +++ b/assets/js/66406991.8dcbcfde.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[110],{711:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/hello","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/6875c492.1b99bca8.js b/assets/js/6875c492.1b99bca8.js new file mode 100644 index 000000000..eed9886c9 --- /dev/null +++ b/assets/js/6875c492.1b99bca8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8610],{1158:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(7294),l=a(5999),r=a(2244);function s(e){const{metadata:t}=e,{previousPage:a,nextPage:s}=t;return n.createElement("nav",{className:"pagination-nav","aria-label":(0,l.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},a&&n.createElement(r.Z,{permalink:a,title:n.createElement(l.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")}),s&&n.createElement(r.Z,{permalink:s,title:n.createElement(l.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries"),isNext:!0}))}},9985:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(7294),l=a(9460),r=a(390);function s(e){let{items:t,component:a=r.Z}=e;return n.createElement(n.Fragment,null,t.map((e=>{let{content:t}=e;return n.createElement(l.n,{key:t.metadata.permalink,content:t},n.createElement(a,null,n.createElement(t,null)))})))}},1714:(e,t,a)=>{a.r(t),a.d(t,{default:()=>E});var n=a(7294),l=a(6010),r=a(5999),s=a(8824),o=a(1944),i=a(5281),g=a(9960),c=a(9058),m=a(1158),p=a(197),u=a(9985);function d(e){const t=function(){const{selectMessage:e}=(0,s.c)();return t=>e(t,(0,r.I)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}();return(0,r.I)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}function h(e){let{tag:t}=e;const a=d(t);return n.createElement(n.Fragment,null,n.createElement(o.d,{title:a}),n.createElement(p.Z,{tag:"blog_tags_posts"}))}function b(e){let{tag:t,items:a,sidebar:l,listMetadata:s}=e;const o=d(t);return n.createElement(c.Z,{sidebar:l},n.createElement("header",{className:"margin-bottom--xl"},n.createElement("h1",null,o),n.createElement(g.Z,{href:t.allTagsPath},n.createElement(r.Z,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page"},"View All Tags"))),n.createElement(u.Z,{items:a}),n.createElement(m.Z,{metadata:s}))}function E(e){return n.createElement(o.FG,{className:(0,l.Z)(i.k.wrapper.blogPages,i.k.page.blogTagPostListPage)},n.createElement(h,e),n.createElement(b,e))}}}]); \ No newline at end of file diff --git a/assets/js/6a658266.21f54c09.js b/assets/js/6a658266.21f54c09.js new file mode 100644 index 000000000..73ab560f3 --- /dev/null +++ b/assets/js/6a658266.21f54c09.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5378],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}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},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=l(r),u=a,f=m["".concat(c,".").concat(u)]||m[u]||d[u]||o;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[m]="string"==typeof e?e:a,i[1]=s;for(var l=2;l<o;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},3604:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var n=r(7462),a=(r(7294),r(3905));const o={},i="JsonRpc",s={unversionedId:"monitoring/metrics-explanation/jsonrpc",id:"monitoring/metrics-explanation/jsonrpc",title:"JsonRpc",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/jsonrpc.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/jsonrpc",permalink:"/docs/monitoring/metrics-explanation/jsonrpc",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/jsonrpc.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Init",permalink:"/docs/monitoring/metrics-explanation/init"},next:{title:"Merge.Plugin",permalink:"/docs/monitoring/metrics-explanation/merge.plugin"}},c={},l=[],p={toc:l},m="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"jsonrpc"},"JsonRpc"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_json_rpc_bytes_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of JSON RPC bytes received.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_json_rpc_bytes_sent"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of JSON RPC bytes sent.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_json_rpc_errors"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of JSON RPC requests processed with errors.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_json_rpc_invalid_requests"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of JSON RPC requests that were invalid.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_json_rpc_request_deserialization_failures"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of JSON RPC requests that failed JSON deserialization.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_json_rpc_requests"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of JSON RPC requests received by the node.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_json_rpc_successes"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of JSON RPC requests processed succesfully.")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6c6fcfe0.e60298e7.js b/assets/js/6c6fcfe0.e60298e7.js new file mode 100644 index 000000000..527f81049 --- /dev/null +++ b/assets/js/6c6fcfe0.e60298e7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9918],{3905:(t,e,a)=>{a.d(e,{Zo:()=>k,kt:()=>g});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function p(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var d=n.createContext({}),m=function(t){var e=n.useContext(d),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},k=function(t){var e=m(t.components);return n.createElement(d.Provider,{value:e},t.children)},o="mdxType",N={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},b=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,d=t.parentName,k=p(t,["components","mdxType","originalType","parentName"]),o=m(a),b=r,g=o["".concat(d,".").concat(b)]||o[b]||N[b]||l;return a?n.createElement(g,i(i({ref:e},k),{},{components:a})):n.createElement(g,i({ref:e},k))}));function g(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=b;var p={};for(var d in e)hasOwnProperty.call(e,d)&&(p[d]=e[d]);p.originalType=t,p[o]="string"==typeof t?t:r,i[1]=p;for(var m=2;m<l;m++)i[m]=a[m];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}b.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(t){let{children:e,hidden:a,className:i}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>C});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),p=a(6550),d=a(1980),m=a(7392),k=a(12);function o(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function N(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??o(a);return function(t){const e=(0,m.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function b(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function g(t){let{queryString:e=!1,groupId:a}=t;const n=(0,p.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,d._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function c(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=N(t),[i,p]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!b({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[d,m]=g({queryString:a,groupId:n}),[o,c]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,k.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),s=(()=>{const t=d??o;return b({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{s&&p(s)}),[s]);return{selectedValue:i,selectValue:(0,r.useCallback)((t=>{if(!b({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);p(t),m(t),c(t)}),[m,c,l]),tabValues:l}}var s=a(2389);const u={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function f(t){let{className:e,block:a,selectedValue:p,selectValue:d,tabValues:m}=t;const k=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.o5)(),N=t=>{const e=t.currentTarget,a=k.indexOf(e),n=m[a].value;n!==p&&(o(e),d(n))},b=t=>{let e=null;switch(t.key){case"Enter":N(t);break;case"ArrowRight":{const a=k.indexOf(t.currentTarget)+1;e=k[a]??k[0];break}case"ArrowLeft":{const a=k.indexOf(t.currentTarget)-1;e=k[a]??k[k.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},m.map((t=>{let{value:e,label:a,attributes:i}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:p===e?0:-1,"aria-selected":p===e,key:e,ref:t=>k.push(t),onKeyDown:b,onClick:N},i,{className:(0,l.Z)("tabs__item",u.tabItem,i?.className,{"tabs__item--active":p===e})}),a??e)})))}function h(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function y(t){const e=c(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",u.tabList)},r.createElement(f,(0,n.Z)({},t,e)),r.createElement(h,(0,n.Z)({},t,e)))}function C(t){const e=(0,s.Z)();return r.createElement(y,(0,n.Z)({key:String(e)},t))}},455:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>k,contentTitle:()=>d,default:()=>g,frontMatter:()=>p,metadata:()=>m,toc:()=>o});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const p={},d="debug",m={unversionedId:"interacting-with-nethermind/json-rpc-api/debug",id:"interacting-with-nethermind/json-rpc-api/debug",title:"debug",description:"debug_deleteChainSlice",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/debug.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/debug",permalink:"/docs/interacting-with-nethermind/json-rpc-api/debug",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/debug.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"clique",permalink:"/docs/interacting-with-nethermind/json-rpc-api/clique"},next:{title:"Engine JsonRpc Config Example",permalink:"/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example"}},k={},o=[{value:"debug_deleteChainSlice",id:"debug_deletechainslice",level:2},{value:"debug_getBlockRlp",id:"debug_getblockrlp",level:2},{value:"debug_getBlockRlpByHash",id:"debug_getblockrlpbyhash",level:2},{value:"debug_getChainLevel",id:"debug_getchainlevel",level:2},{value:"debug_getConfigValue",id:"debug_getconfigvalue",level:2},{value:"debug_getSyncStage",id:"debug_getsyncstage",level:2},{value:"debug_insertReceipts",id:"debug_insertreceipts",level:2},{value:"debug_migrateReceipts",id:"debug_migratereceipts",level:2},{value:"debug_resetHead",id:"debug_resethead",level:2},{value:"debug_traceBlock",id:"debug_traceblock",level:2},{value:"debug_traceBlockByHash",id:"debug_traceblockbyhash",level:2},{value:"debug_traceBlockByNumber",id:"debug_traceblockbynumber",level:2},{value:"debug_traceCall",id:"debug_tracecall",level:2},{value:"debug_traceTransaction",id:"debug_tracetransaction",level:2},{value:"debug_traceTransactionByBlockAndIndex",id:"debug_tracetransactionbyblockandindex",level:2},{value:"debug_traceTransactionByBlockhashAndIndex",id:"debug_tracetransactionbyblockhashandindex",level:2},{value:"debug_traceTransactionInBlockByHash",id:"debug_tracetransactioninblockbyhash",level:2},{value:"debug_traceTransactionInBlockByIndex",id:"debug_tracetransactioninblockbyindex",level:2}],N={toc:o},b="wrapper";function g(t){let{components:e,...a}=t;return(0,r.kt)(b,(0,n.Z)({},N,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"debug"},"debug"),(0,r.kt)("h2",{id:"debug_deletechainslice"},"debug_deleteChainSlice"),(0,r.kt)("p",null,"Deletes a slice of a chain from the tree on all branches (Nethermind specific). "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_deleteChainSlice","params":[startNumber]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"startNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of debug_deleteChainSlice"',title:'"Example',request:!0,of:!0,'debug_deleteChainSlice"':!0},'curl --data \'{"method":"debug_deleteChainSlice","params":[startNumber],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("h2",{id:"debug_getblockrlp"},"debug_getBlockRlp"),(0,r.kt)("p",null,"Retrieves a block in the RLP-serialized form. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_getBlockRlp","params":[number]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of debug_getBlockRlp"',title:'"Example',request:!0,of:!0,'debug_getBlockRlp"':!0},'curl --data \'{"method":"debug_getBlockRlp","params":[number],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-getblockrlp"},"See also CLI debug.getBlockRlp")),(0,r.kt)("h2",{id:"debug_getblockrlpbyhash"},"debug_getBlockRlpByHash"),(0,r.kt)("p",null,"Retrieves a block in the RLP-serialized form. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_getBlockRlpByHash","params":[hash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of debug_getBlockRlpByHash"',title:'"Example',request:!0,of:!0,'debug_getBlockRlpByHash"':!0},'curl --data \'{"method":"debug_getBlockRlpByHash","params":[hash],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-getblockrlpbyhash"},"See also CLI debug.getBlockRlpByHash")),(0,r.kt)("h2",{id:"debug_getchainlevel"},"debug_getChainLevel"),(0,r.kt)("p",null,"Retrieves a representation of tree branches on a given chain level (Nethermind specific). "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_getChainLevel","params":[number]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ChainLevelForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_getChainLevel","params":[number],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Object",value:"object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ChainLevelForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockInfos"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockInfoForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"HasBlockOnMainChain"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockInfoForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WasProcessed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsFinalized"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-getchainlevel"},"See also CLI debug.getChainLevel")),(0,r.kt)("h2",{id:"debug_getconfigvalue"},"debug_getConfigValue"),(0,r.kt)("p",null,"Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_getConfigValue","params":[category, name]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"category"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"name"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of debug_getConfigValue"',title:'"Example',request:!0,of:!0,'debug_getConfigValue"':!0},'curl --data \'{"method":"debug_getConfigValue","params":[category, name],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("h2",{id:"debug_getsyncstage"},"debug_getSyncStage"),(0,r.kt)("p",null,"Retrives Nethermind Sync Stage, With extra Metadata "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_getSyncStage","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"SyncReportSymmary object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_getSyncStage","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SyncReportSymmary")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CurrentStage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,r.kt)("h2",{id:"debug_insertreceipts"},"debug_insertReceipts"),(0,r.kt)("p",null,"Insert receipts for the block after verifying receipts root correctness. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_insertReceipts","params":[blockParameter, receiptForRpc]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"receiptForRpc"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptForRpc[] object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_insertReceipts","params":[blockParameter, receiptForRpc],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CumulativeGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EffectiveGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ContractAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Logs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"LogEntryForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Root"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Status"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))))))),(0,r.kt)("h2",{id:"debug_migratereceipts"},"debug_migrateReceipts"),(0,r.kt)("p",null,"Sets the block number up to which receipts will be migrated to (Nethermind specific). "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_migrateReceipts","params":[blockNumber]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of debug_migrateReceipts"',title:'"Example',request:!0,of:!0,'debug_migrateReceipts"':!0},'curl --data \'{"method":"debug_migrateReceipts","params":[blockNumber],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-migratereceipts"},"See also CLI debug.migrateReceipts")),(0,r.kt)("h2",{id:"debug_resethead"},"debug_resetHead"),(0,r.kt)("p",null,"Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific). "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_resetHead","params":[blockHash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of debug_resetHead"',title:'"Example',request:!0,of:!0,'debug_resetHead"':!0},'curl --data \'{"method":"debug_resetHead","params":[blockHash],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("h2",{id:"debug_traceblock"},"debug_traceBlock"),(0,r.kt)("p",null,"Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceBlock","params":[blockRlp, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockRlp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceBlock","params":[blockRlp, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-traceblock"},"See also CLI debug.traceBlock")),(0,r.kt)("h2",{id:"debug_traceblockbyhash"},"debug_traceBlockByHash"),(0,r.kt)("p",null,"Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceBlockByHash","params":[blockHash, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceBlockByHash","params":[blockHash, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-traceblockbyhash"},"See also CLI debug.traceBlockByHash")),(0,r.kt)("h2",{id:"debug_traceblockbynumber"},"debug_traceBlockByNumber"),(0,r.kt)("p",null,'Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database. '),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceBlockByNumber","params":[blockParameter, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceBlockByNumber","params":[blockParameter, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-traceblockbynumber"},"See also CLI debug.traceBlockByNumber")),(0,r.kt)("h2",{id:"debug_tracecall"},"debug_traceCall"),(0,r.kt)("p",null,"This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceCall","params":[call, blockParameter, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"call"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceCall","params":[call, blockParameter, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("h2",{id:"debug_tracetransaction"},"debug_traceTransaction"),(0,r.kt)("p",null,"This method will attempt to run the transaction in the exact same manner as it was executed on the network. It will replay any transaction that may have been executed prior to this one before it will finally attempt to execute the transaction that corresponds to the given hash. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceTransaction","params":[transactionHash, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceTransaction","params":[transactionHash, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-tracetransaction"},"See also CLI debug.traceTransaction")),(0,r.kt)("h2",{id:"debug_tracetransactionbyblockandindex"},"debug_traceTransactionByBlockAndIndex"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceTransactionByBlockAndIndex","params":[blockParameter, txIndex, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceTransactionByBlockAndIndex","params":[blockParameter, txIndex, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-tracetransactionbyblockandindex"},"See also CLI debug.traceTransactionByBlockAndIndex")),(0,r.kt)("h2",{id:"debug_tracetransactionbyblockhashandindex"},"debug_traceTransactionByBlockhashAndIndex"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceTransactionByBlockhashAndIndex","params":[blockHash, txIndex, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceTransactionByBlockhashAndIndex","params":[blockHash, txIndex, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-tracetransactionbyblockhashandindex"},"See also CLI debug.traceTransactionByBlockhashAndIndex")),(0,r.kt)("h2",{id:"debug_tracetransactioninblockbyhash"},"debug_traceTransactionInBlockByHash"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceTransactionInBlockByHash","params":[blockRlp, transactionHash, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockRlp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceTransactionInBlockByHash","params":[blockRlp, transactionHash, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-tracetransactioninblockbyhash"},"See also CLI debug.traceTransactionInBlockByHash")),(0,r.kt)("h2",{id:"debug_tracetransactioninblockbyindex"},"debug_traceTransactionInBlockByIndex"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"debug_traceTransactionInBlockByIndex","params":[blockRlp, txIndex, options]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockRlp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"options"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethTraceOptions object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"GethLikeTxTrace object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"debug_traceTransactionInBlockByIndex","params":[blockRlp, txIndex, options],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethTraceOptions")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStorage"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DisableStack"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timeout"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"GethLikeTxTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StoragesByDepth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Failed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReturnValue"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Entries"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/debug#debug-tracetransactioninblockbyindex"},"See also CLI debug.traceTransactionInBlockByIndex")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6c93811b.75c20437.js b/assets/js/6c93811b.75c20437.js new file mode 100644 index 000000000..5c2cd9683 --- /dev/null +++ b/assets/js/6c93811b.75c20437.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6417],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>d});var r=n(7294);function i(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},m=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),s=p(n),f=i,d=s["".concat(l,".").concat(f)]||s[f]||u[f]||o;return n?r.createElement(d,a(a({ref:t},m),{},{components:n})):r.createElement(d,a({ref:t},m))}));function d(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:i,a[1]=c;for(var p=2;p<o;p++)a[p]=n[p];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},9425:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));const o={},a="Init",c={unversionedId:"monitoring/metrics-explanation/init",id:"monitoring/metrics-explanation/init",title:"Init",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/init.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/init",permalink:"/docs/monitoring/metrics-explanation/init",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/init.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Evm",permalink:"/docs/monitoring/metrics-explanation/evm"},next:{title:"JsonRpc",permalink:"/docs/monitoring/metrics-explanation/jsonrpc"}},l={},p=[],m={toc:p},s="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(s,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"init"},"Init"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,i.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"nethermind_version"),(0,i.kt)("td",{parentName:"tr",align:"left"},"Version number")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6dd8f82a.fdf3911c.js b/assets/js/6dd8f82a.fdf3911c.js new file mode 100644 index 000000000..1c9fff2d0 --- /dev/null +++ b/assets/js/6dd8f82a.fdf3911c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6833],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(n),u=i,k=p["".concat(l,".").concat(u)]||p[u]||m[u]||r;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function k(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:i,o[1]=s;for(var c=2;c<r;c++)o[c]=n[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},7585:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var a=n(7462),i=(n(7294),n(3905));const r={description:"How to setup a Nethermind Validator in Aura (Authority Round) consensus algorithm"},o="Aura Validator",s={unversionedId:"resources/guides-and-helpers/validator-setup/aura-validator",id:"resources/guides-and-helpers/validator-setup/aura-validator",title:"Aura Validator",description:"How to setup a Nethermind Validator in Aura (Authority Round) consensus algorithm",source:"@site/docs/07-resources/guides-and-helpers/validator-setup/aura-validator.md",sourceDirName:"07-resources/guides-and-helpers/validator-setup",slug:"/resources/guides-and-helpers/validator-setup/aura-validator",permalink:"/docs/resources/guides-and-helpers/validator-setup/aura-validator",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/guides-and-helpers/validator-setup/aura-validator.md",tags:[],version:"current",frontMatter:{description:"How to setup a Nethermind Validator in Aura (Authority Round) consensus algorithm"},sidebar:"tutorialSidebar",previous:{title:"ETH2 <-> Nethermind",permalink:"/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind"},next:{title:"Eth2 Validator",permalink:"/docs/resources/guides-and-helpers/validator-setup/eth2-validator"}},l={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Clock synchronization",id:"clock-synchronization",level:2},{value:"Docker-compose file sample",id:"docker-compose-file-sample",level:2},{value:"Mining <strong>P</strong>rivate key",id:"mining-private-key",level:2},{value:"Config file",id:"config-file",level:2},{value:"Running Validator node",id:"running-validator-node",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...r}=e;return(0,i.kt)(p,(0,a.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"aura-validator"},"Aura Validator"),(0,i.kt)("p",null,"This article will lead you through docker-compose setup of ",(0,i.kt)("strong",{parentName:"p"},"Nethermind Aura Validator")," (xDai chain in this example).\nSame result can be obtained\nby ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/installing-nethermind"},"Downloading")," & ",(0,i.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind/running-the-client"},"Running Nethermind"),"\npackage or by ",(0,i.kt)("a",{parentName:"p",href:"/docs/for-developers/building-nethermind"},"Building Nethermind")," from the source code."," "),(0,i.kt)("p",null,"If you chose not to use docker-compose, you can skip docker-compose related sections and read\nabout ",(0,i.kt)("a",{parentName:"p",href:"/docs/resources/guides-and-helpers/validator-setup/aura-validator#config-file"},"config file")," and ",(0,i.kt)("a",{parentName:"p",href:"/docs/resources/guides-and-helpers/validator-setup/aura-validator#mining-private-key"},"private key "),"configuration\nonly."),(0,i.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,i.kt)("ul",{className:"contains-task-list"},(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","docker-compose"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","docker"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","machine with at least 4GB RAM is recommended")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt-get install docker docker-compose -y\n")),(0,i.kt)("h2",{id:"clock-synchronization"},"Clock synchronization"),(0,i.kt)("p",null,"You system clock needs to be synchronized otherwise you might encounter skipping block sealing. By\ndefault ",(0,i.kt)("inlineCode",{parentName:"p"},"stepDuration")," is configured to ",(0,i.kt)("inlineCode",{parentName:"p"},"5s"),"."),(0,i.kt)("p",null,"Verify if your system clock is synchronized, type ",(0,i.kt)("inlineCode",{parentName:"p"},"timedatectl status")," and you should see similar output:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"Local time: Tue 2020-06-30 17:16:19 UTC\nUniversal time: Tue 2020-06-30 17:16:19 UTC\nRTC time: Tue 2020-06-30 17:16:19\nTime zone: Etc/UTC (UTC, +0000)\nSystem clock synchronized: yes\nsystemd-timesyncd.service active: yes\nRTC in local TZ: no\n")),(0,i.kt)("p",null,"If ",(0,i.kt)("inlineCode",{parentName:"p"},"System clock synchronized")," displays ",(0,i.kt)("inlineCode",{parentName:"p"},"yes")," you are all set, otherwise you may need to either:"),(0,i.kt)("ul",{className:"contains-task-list"},(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","synchronize clock with NTP servers (allow ",(0,i.kt)("strong",{parentName:"li"},"UDP")," port ",(0,i.kt)("strong",{parentName:"li"},"123")," for both incoming and outgoing traffic)"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","use below script to sync with google.com:")),(0,i.kt)("p",null,"Create ",(0,i.kt)("inlineCode",{parentName:"p"},"fixtime.sh")," script and run it with ",(0,i.kt)("inlineCode",{parentName:"p"},"watch -n 60")," command in a ",(0,i.kt)("inlineCode",{parentName:"p"},"screen")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"echo sudo date -s '\"$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z\"' > fixtime.sh\nchmod +x fixtime.sh\nscreen -S time\nwatch -n 60 ./fixtime.sh\n")),(0,i.kt)("p",null,"Press ",(0,i.kt)("inlineCode",{parentName:"p"},"Ctrl+A+D")," to leave the ",(0,i.kt)("inlineCode",{parentName:"p"},"screen")),(0,i.kt)("h2",{id:"docker-compose-file-sample"},"Docker-compose file sample"),(0,i.kt)("p",null,"Create and edit",(0,i.kt)("inlineCode",{parentName:"p"},"docker-compose.yml")," file"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"nano docker-compose.yml\n")),(0,i.kt)("p",null,'{% tabs %}\n{% tab title="docker-compose.yml" %}'),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-yaml"},"version: '3.5'\n\nservices:\n nethermind-validator:\n image: nethermind/nethermind\n container_name: nethermind-validator\n restart: unless-stopped\n ports:\n - 8545:8545\n - 30303:30303\n network_mode: host\n environment:\n - NETHERMIND_CONFIG=xdai\n volumes:\n - ${PWD}/nethermind_db:/nethermind/nethermind_db\n - ${PWD}/keystore:/nethermind/keystore\n - ${PWD}/logs:/nethermind/logs\n - ${PWD}/xdai.cfg:/nethermind/configs/xdai.cfg\n - ${PWD}/NLog.config:/nethermind/NLog.config\n - ${PWD}/static-nodes.json:/nethermind/Data/static-nodes.json\n\nvolumes:\n nethermind_db:\n driver: local\n name: nethermind_db\n keystore:\n driver: local\n name: keystore\n logs:\n driver: local\n name: logs\n")),(0,i.kt)("p",null,"{% endtab %}\n{% endtabs %}"),(0,i.kt)("p",null,"Configure Nethermind node via environment variables or use local config file and map it to the one, existing inside\ncontainer (",(0,i.kt)("inlineCode",{parentName:"p"},"xdai.cfg")," file in above example)."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Make sure that ",(0,i.kt)("inlineCode",{parentName:"p"},"nethermind_db"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"keystore"),"(",(0,i.kt)("inlineCode",{parentName:"p"},"logs")," - optional ) are mapped, otherwise you might lose database or keys")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind/runtime#nlog-config"},(0,i.kt)("inlineCode",{parentName:"a"},"NLog.config"))," file is optional.\\\n",(0,i.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind/runtime#static-nodes"},(0,i.kt)("inlineCode",{parentName:"a"},"static-nodes.json"))," can be filled with an\narray\nof enodes, this is also optional."),(0,i.kt)("h2",{id:"mining-private-key"},"Mining ",(0,i.kt)("strong",{parentName:"h2"},"P"),"rivate key"),(0,i.kt)("admonition",{type:"danger"},(0,i.kt)("p",{parentName:"admonition"},"Make sure that the filename contains key's ",(0,i.kt)("strong",{parentName:"p"},"public address")," otherwise it won't be recognized by Nethermind Client as a\nkeyfile.\\\n\\\nCorrect naming of a ",(0,i.kt)("inlineCode",{parentName:"p"},"keyfile"),": ",(0,i.kt)("strong",{parentName:"p"},"key-a5237f7f43cc46cba43ac212dabd0c45e3e3050a")),(0,i.kt)("p",{parentName:"admonition"},"The ",(0,i.kt)("inlineCode",{parentName:"p"},"keyfile")," should be then stored inside ",(0,i.kt)("inlineCode",{parentName:"p"},"keystore")," volume.")),(0,i.kt)("h2",{id:"config-file"},"Config file"),(0,i.kt)("p",null,"Things to be configured:"),(0,i.kt)("ul",{className:"contains-task-list"},(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ",(0,i.kt)("inlineCode",{parentName:"li"},"Init.IsMining")," true"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ",(0,i.kt)("inlineCode",{parentName:"li"},"Init.MemoryHint")," can be left default, recommended to configure it accordingly to the machine hardware setup (\nfor ",(0,i.kt)("inlineCode",{parentName:"li"},"xdai")," 1000000000 is enough)"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ",(0,i.kt)("inlineCode",{parentName:"li"},"EthStats")," section if you wish to report node status to the ethstats page for a given network"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ",(0,i.kt)("inlineCode",{parentName:"li"},"Metrics")," section if running\nlocal/remote ",(0,i.kt)("a",{parentName:"li",href:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture"},"Metrics infrastructure")),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ",(0,i.kt)("inlineCode",{parentName:"li"},"KeyStore.PasswordFiles")," path to the file containing password for ",(0,i.kt)("strong",{parentName:"li"},"mining private key")),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ",(0,i.kt)("inlineCode",{parentName:"li"},"KeyStore.UnlockAccounts")," an array of accounts, provide ",(0,i.kt)("strong",{parentName:"li"},"mining public address")," here"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ",(0,i.kt)("inlineCode",{parentName:"li"},"KeyStore.BlockAuthorAccount")," ",(0,i.kt)("strong",{parentName:"li"},"mining public address")," should be provided here as well"),(0,i.kt)("li",{parentName:"ul",className:"task-list-item"},(0,i.kt)("input",{parentName:"li",type:"checkbox",checked:!1,disabled:!0})," ",(0,i.kt)("inlineCode",{parentName:"li"},"Aura.ForceSealing")," set to true")),(0,i.kt)("p",null,'{% tabs %}\n{% tab title="xdai.cfg" %}'),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Init": {\n "WebSocketsEnabled": false,\n "StoreReceipts": true,\n "IsMining": true,\n "ChainSpecPath": "chainspec/xdai.json",\n "GenesisHash": "0x4f1dd23188aab3a76b463e4af801b52b1248ef073c648cbdc4c9333d3da79756",\n "BaseDbPath": "nethermind_db/xdai",\n "LogFileName": "xdai.logs.txt",\n "MemoryHint": 3000000000,\n "StaticNodesPath": "Data/static-nodes.json"\n },\n "Network": {\n "DiscoveryPort": 30303,\n "P2PPort": 30303\n },\n "JsonRpc": {\n "Enabled": false,\n "Host": "127.0.0.1",\n "Port": 8545,\n "WebSocketsPort": 8546\n },\n "Db": {\n "HeadersDbCacheIndexAndFilterBlocks": false,\n "BlocksDbCacheIndexAndFilterBlocks": false,\n "ReceiptsDbCacheIndexAndFilterBlocks": false,\n "BlockInfosDbCacheIndexAndFilterBlocks": false\n },\n "Sync": {\n "FastSync": true,\n "PivotNumber": 10410000,\n "PivotHash": "0x806f498fdde010f25bd3beb18e6f8a9c9450752f8c0e27da2cd2465ff184628c",\n "PivotTotalDifficulty": "3542339439646969404653729663364707080928280566",\n "FastBlocks": true,\n "UseGethLimitsInFastBlocks": false,\n "FastSyncCatchUpHeightDelta": 10000000000\n },\n "EthStats": {\n "Enabled": false,\n "Server": "ws://localhost:3000/api",\n "Name": "Nethermind xDai",\n "Secret": "secret",\n "Contact": "hello@nethermind.io"\n },\n "Metrics": {\n "NodeName": "Nethermind xDai",\n "Enabled": false,\n "PushGatewayUrl": "http://localhost:9091/metrics",\n "IntervalSeconds": 5\n },\n "KeyStore": {\n "PasswordFiles": [\n "keystore/password.file"\n ],\n "UnlockAccounts": [\n "0x..."\n ],\n "BlockAuthorAccount": "0x..."\n },\n "Aura": {\n "ForceSealing": true\n },\n "Bloom": {\n "IndexLevelBucketSizes": [\n 16,\n 16,\n 16\n ]\n }\n}\n\n')),(0,i.kt)("p",null,"{% endtab %}\n{% endtabs %}"),(0,i.kt)("h2",{id:"running-validator-node"},"Running Validator node"),(0,i.kt)("p",null,"Run it with a simple docker-compose command."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose up -d\n")),(0,i.kt)("p",null,"You will need to wait for the node to be fully ",(0,i.kt)("strong",{parentName:"p"},"synchronized"),"."),(0,i.kt)("p",null,"To check the logs and verify if it is sealing blocks as expected (look for the ",(0,i.kt)("inlineCode",{parentName:"p"},"Sealed block")," log)."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose logs -f nethermind-validator\n")),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(9336).Z,width:"893",height:"340"})))}m.isMDXComponent=!0},9336:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(37)-af8260f3a196744f9d905fb241639318.png"}}]); \ No newline at end of file diff --git a/assets/js/6f716d37.f1c64dfd.js b/assets/js/6f716d37.f1c64dfd.js new file mode 100644 index 000000000..f36ee3834 --- /dev/null +++ b/assets/js/6f716d37.f1c64dfd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7606],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function a(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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),f=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=f(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",s={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,a=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=f(n),m=a,d=p["".concat(c,".").concat(m)]||p[m]||s[m]||o;return n?r.createElement(d,i(i({ref:t},u),{},{components:n})):r.createElement(d,i({ref:t},u))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:a,i[1]=l;for(var f=2;f<o;f++)i[f]=n[f];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5885:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>l,toc:()=>f});var r=n(7462),a=(n(7294),n(3905));const o={},i="Seq",l={unversionedId:"fundamentals/configuration/seq",id:"fundamentals/configuration/seq",title:"Seq",description:"Configuration of the Prometheus + Grafana metrics publication. Documentation of the required setup is not yet ready (but",source:"@site/docs/02-fundamentals/04-configuration/seq.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/seq",permalink:"/docs/fundamentals/configuration/seq",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/seq.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Sample configuration",permalink:"/docs/fundamentals/configuration/sample-configuration"},next:{title:"Sync",permalink:"/docs/fundamentals/configuration/sync"}},c={},f=[],u={toc:f},p="wrapper";function s(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"seq"},"Seq"),(0,a.kt)("p",null,"Configuration of the Prometheus + Grafana metrics publication. Documentation of the required setup is not yet ready (but\nthe metrics do work and are used by the dev team)"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ApiKey"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SEQCONFIG_APIKEY"),(0,a.kt)("td",{parentName:"tr",align:"left"},"API key used for log events ingestion to Seq instance"),(0,a.kt)("td",{parentName:"tr",align:"left"})),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"MinLevel"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SEQCONFIG_MINLEVEL"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Minimal level of log events which will be sent to Seq instance."),(0,a.kt)("td",{parentName:"tr",align:"left"},"Off")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ServerUrl"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_SEQCONFIG_SERVERURL"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Seq instance URL."),(0,a.kt)("td",{parentName:"tr",align:"left"},'"http://localhost:5341')))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/72759bb7.c6b89dea.js b/assets/js/72759bb7.c6b89dea.js new file mode 100644 index 000000000..91984ccba --- /dev/null +++ b/assets/js/72759bb7.c6b89dea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5655],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var s=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,s)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t){if(null==e)return{};var n,s,o=function(e,t){if(null==e)return{};var n,s,o={},r=Object.keys(e);for(s=0;s<r.length;s++)n=r[s],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s<r.length;s++)n=r[s],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=s.createContext({}),l=function(e){var t=s.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return s.createElement(c.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return s.createElement(s.Fragment,{},t)}},p=s.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),h=l(n),p=o,m=h["".concat(c,".").concat(p)]||h[p]||d[p]||r;return n?s.createElement(m,i(i({ref:t},u),{},{components:n})):s.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=p;var a={};for(var c in t)hasOwnProperty.call(t,c)&&(a[c]=t[c]);a.originalType=e,a[h]="string"==typeof e?e:o,i[1]=a;for(var l=2;l<r;l++)i[l]=n[l];return s.createElement.apply(null,i)}return s.createElement.apply(null,n)}p.displayName="MDXCreateElement"},1160:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var s=n(7462),o=(n(7294),n(3905));const r={description:"There are several known issues with the current version of Nethermind"},i="Known Issues",a={unversionedId:"resources/know-issues",id:"resources/know-issues",title:"Known Issues",description:"There are several known issues with the current version of Nethermind",source:"@site/docs/07-resources/know-issues.md",sourceDirName:"07-resources",slug:"/resources/know-issues",permalink:"/docs/resources/know-issues",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/know-issues.md",tags:[],version:"current",frontMatter:{description:"There are several known issues with the current version of Nethermind"},sidebar:"tutorialSidebar",previous:{title:"Eth2 Validator",permalink:"/docs/resources/guides-and-helpers/validator-setup/eth2-validator"},next:{title:"Contact Us",permalink:"/docs/category/contact-us"}},c={},l=[{value:"RocksDB checksum issue",id:"rocksdb-checksum-issue",level:2},{value:"Database LOCK files not removed by RocksDB",id:"database-lock-files-not-removed-by-rocksdb",level:2},{value:"Leaking Socket Descriptors",id:"leaking-socket-descriptors",level:2},{value:"RocksDB on macOS",id:"rocksdb-on-macos",level:2},{value:"Skipping consensus issues blocks",id:"skipping-consensus-issues-blocks",level:2},{value:"Main issues reported so far when using Nethermind for Eth2 (30.11.2020)",id:"main-issues-reported-so-far-when-using-nethermind-for-eth2-30112020",level:2}],u={toc:l},h="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(h,(0,s.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"known-issues"},"Known Issues"),(0,o.kt)("h2",{id:"rocksdb-checksum-issue"},"RocksDB checksum issue"),(0,o.kt)("p",null,"Sometimes RocksDB may fail with an exception similar to the one below:"),(0,o.kt)("p",null,"2020-11-29 12:02:01.1968|BlockchainProcessor encountered an exception. RocksDbSharp.RocksDbException: Corruption: block\nchecksum mismatch: expected 2087346143, got 2983326672 in C:\\Nethermind\\nethermind","_","db/mainnet\\state/037463.sst offset\n33439089 size 16319"),(0,o.kt)("p",null,"On XFS file system under very high memory pressure, this tend to happen. Turning on the\nflag ",(0,o.kt)("inlineCode",{parentName:"p"},"--Db.UseDirectIoForFlushAndCompactions true"),"will help, although it might reduce performance."),(0,o.kt)("p",null,"On most cases however, this is due to RAM module issue. Please run ",(0,o.kt)("a",{parentName:"p",href:"https://www.memtest86.com/"},"memtest86")," to check your\nmemory module."," "),(0,o.kt)("h2",{id:"database-lock-files-not-removed-by-rocksdb"},"Database LOCK files not removed by RocksDB"),(0,o.kt)("p",null,"If the node complains about the LOCK files it may mean one of the two things:"),(0,o.kt)("p",null,"(1) another Nethermind process is running and using the same DB"),(0,o.kt)("p",null,"(2) previous process did not close the DB properly"),(0,o.kt)("p",null,"When (2) happens you can run"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"find . -type f -name 'LOCK' -delete")),(0,o.kt)("p",null,"in the database folder."),(0,o.kt)("h2",{id:"leaking-socket-descriptors"},"Leaking Socket Descriptors"),(0,o.kt)("p",null,"On Linux our networking library is not closing socket descriptors properly. This results in the number of open files for\nthe process growing indefinitely. Limits for the number of open files per process are different for root and other\nusers. For root the limits are usually very high and the socket descriptors would probably not cause much trouble. Many\nof the cloud operators are launching VMs with root user access by default. If Nethermind process is frequently killed by\nOS then you may need to change the configuration for the maximum number of open files."),(0,o.kt)("h2",{id:"rocksdb-on-macos"},"RocksDB on macOS"),(0,o.kt)("p",null,"RocksDB library does not always load properly on macOS. One (hacky) workaround is to install the latest version of\nRocksDB by running brew install rocksdb."),(0,o.kt)("h2",{id:"skipping-consensus-issues-blocks"},"Skipping consensus issues blocks"),(0,o.kt)("p",null,"We do our best in Nethermind not to have consensus issues with other clients. But historically consensus issues had\nhappened. In that case we start working on a hotfix immediately and release it within hours time. If you need your node\nto be operational ASAP and can\u2019t wait for hotfix you do have an option to achieve that. Nethermind node allows you to\nfast sync to recent blocks and state. When node does fast sync it can skip over processing problematic blocks. In order\nto be able to fast sync we need SyncConfig.FastSync to be set to \u2018true\u2019. You also need to set\nSyncConfig.FastSyncCatchUpHeightDelta to a value lower than how far your node is behind the chain.\nSyncConfig.FastSyncCatchUpHeightDelta is the minimum difference between current chain height and chain head block number\nwhen node can switch from full sync (block processing) to fast sync. By default it is set to 1024. Please note that we\ndon\u2019t recommend setting this value to less than 32 in normal circumstances. After setting those values and restarting\nnode, the node will download block headers, bodies (if SyncConfig.DownloadBodiesInFastSync is \u2018true\u2019), receipts (if\nSyncConfig.DownloadReceiptsInFastSync is \u2018true\u2019) and current state. After that it will resume processing from new head\nblock. Please note that the historical state for skipped blocks might not be available. This can cause some JSON RPC\ncalls on the historical state not to work - same situation as if these blocks state was pruned."),(0,o.kt)("p",null,"For example if current chain head block number is 10,000,100 and node couldn\u2019t process block 10,000,000 due to consensus\nissue, if you set FastSync:true and FastSyncCatchUpHeightDelta:100 (or as low as 32) and node should switch to fast\nsync, catch up with current chain head and switch back to full sync."),(0,o.kt)("p",null,"The time that it will take to fast sync to current chain head can take even up to 2 hours depending how many blocks and\nhow much new state there is to be downloaded."),(0,o.kt)("h1",{id:"eth2-issues"},"ETH2 issues"),(0,o.kt)("h2",{id:"main-issues-reported-so-far-when-using-nethermind-for-eth2-30112020"},"Main issues reported so far when using Nethermind for Eth2 (30.11.2020)"),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},"users who synced before version ",(0,o.kt)("strong",{parentName:"li"},"1.9.41")," and were not aware that old configs were ",(0,o.kt)("strong",{parentName:"li"},"not")," supporting Eth2 by default\nhad to resync with ",(0,o.kt)("strong",{parentName:"li"},"1.9.41")," (and they are reporting successful setups now)"," "),(0,o.kt)("li",{parentName:"ul"},"users who synced with ",(0,o.kt)("inlineCode",{parentName:"li"},"AncientReceiptsBarrier")," (limiting disk space) cannot use ",(0,o.kt)("strong",{parentName:"li"},"Teku")," and ",(0,o.kt)("strong",{parentName:"li"},"have to switch")," to *\n*Prysm",(0,o.kt)("strong",{parentName:"li"}," or "),"Lighthouse**"),(0,o.kt)("li",{parentName:"ul"},"two users reported that their fully synced nodes on Windows 10 Pro failed after a few blocks (please let us know if\nyou have seen a similar issue)"),(0,o.kt)("li",{parentName:"ul"},"(fixed in 1.9.45) users are reporting issues on a hard shutdown of VMs / machines with Nethermind running - some\ndatabase corruptions occur often ",(0,o.kt)("strong",{parentName:"li"},"requiring a resync")),(0,o.kt)("li",{parentName:"ul"},"users had trouble to sync node on a ZFS file system but this has been ",(0,o.kt)("strong",{parentName:"li"},"resolved after removing ZFS")),(0,o.kt)("li",{parentName:"ul"},"users reported an issue where RocksDB was displaying a ",(0,o.kt)("inlineCode",{parentName:"li"},"checksum mismatch")," error in the logs -> ",(0,o.kt)("strong",{parentName:"li"},"restarting a VM (not\nNethermind, but the machine) helped")),(0,o.kt)("li",{parentName:"ul"},"if you tried to launch Lighthouse with the old Nethermind (pre ",(0,o.kt)("strong",{parentName:"li"},"1.9.41"),") which failed and then resynced Nethermind\nand you are still getting errors then ",(0,o.kt)("strong",{parentName:"li"},"wiping the Lighthouse DB and starting again will solve it."),"\n:::"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/732.bac45838.js b/assets/js/732.bac45838.js new file mode 100644 index 000000000..9937a69af --- /dev/null +++ b/assets/js/732.bac45838.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[732],{9058:(e,t,a)=>{a.d(t,{Z:()=>p});var l=a(7294),n=a(6010),r=a(7961),s=a(7524),i=a(9960),o=a(5999);const m={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};function c(e){let{sidebar:t}=e;return l.createElement("aside",{className:"col col--3"},l.createElement("nav",{className:(0,n.Z)(m.sidebar,"thin-scrollbar"),"aria-label":(0,o.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},l.createElement("div",{className:(0,n.Z)(m.sidebarItemTitle,"margin-bottom--md")},t.title),l.createElement("ul",{className:(0,n.Z)(m.sidebarItemList,"clean-list")},t.items.map((e=>l.createElement("li",{key:e.permalink,className:m.sidebarItem},l.createElement(i.Z,{isNavLink:!0,to:e.permalink,className:m.sidebarItemLink,activeClassName:m.sidebarItemLinkActive},e.title)))))))}var u=a(3102);function d(e){let{sidebar:t}=e;return l.createElement("ul",{className:"menu__list"},t.items.map((e=>l.createElement("li",{key:e.permalink,className:"menu__list-item"},l.createElement(i.Z,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active"},e.title)))))}function g(e){return l.createElement(u.Zo,{component:d,props:e})}function h(e){let{sidebar:t}=e;const a=(0,s.i)();return t?.items.length?"mobile"===a?l.createElement(g,{sidebar:t}):l.createElement(c,{sidebar:t}):null}function p(e){const{sidebar:t,toc:a,children:s,...i}=e,o=t&&t.items.length>0;return l.createElement(r.Z,i,l.createElement("div",{className:"container margin-vert--lg"},l.createElement("div",{className:"row"},l.createElement(h,{sidebar:t}),l.createElement("main",{className:(0,n.Z)("col",{"col--7":o,"col--9 col--offset-1":!o}),itemScope:!0,itemType:"http://schema.org/Blog"},s),a&&l.createElement("div",{className:"col col--2"},a))))}},390:(e,t,a)=>{a.d(t,{Z:()=>R});var l=a(7294),n=a(6010),r=a(9460),s=a(4996);function i(e){let{children:t,className:a}=e;const{frontMatter:n,assets:i}=(0,r.C)(),{withBaseUrl:o}=(0,s.C)(),m=i.image??n.image;return l.createElement("article",{className:a,itemProp:"blogPost",itemScope:!0,itemType:"http://schema.org/BlogPosting"},m&&l.createElement("meta",{itemProp:"image",content:o(m,{absolute:!0})}),t)}var o=a(9960);const m={title:"title_f1Hy"};function c(e){let{className:t}=e;const{metadata:a,isBlogPostPage:s}=(0,r.C)(),{permalink:i,title:c}=a,u=s?"h1":"h2";return l.createElement(u,{className:(0,n.Z)(m.title,t),itemProp:"headline"},s?c:l.createElement(o.Z,{itemProp:"url",to:i},c))}var u=a(5999),d=a(8824);const g={container:"container_mt6G"};function h(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,d.c)();return t=>{const a=Math.ceil(t);return e(a,(0,u.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return l.createElement(l.Fragment,null,a(t))}function p(e){let{date:t,formattedDate:a}=e;return l.createElement("time",{dateTime:t,itemProp:"datePublished"},a)}function E(){return l.createElement(l.Fragment,null," \xb7 ")}function b(e){let{className:t}=e;const{metadata:a}=(0,r.C)(),{date:s,formattedDate:i,readingTime:o}=a;return l.createElement("div",{className:(0,n.Z)(g.container,"margin-vert--md",t)},l.createElement(p,{date:s,formattedDate:i}),void 0!==o&&l.createElement(l.Fragment,null,l.createElement(E,null),l.createElement(h,{readingTime:o})))}function f(e){return e.href?l.createElement(o.Z,e):l.createElement(l.Fragment,null,e.children)}function v(e){let{author:t,className:a}=e;const{name:r,title:s,url:i,imageURL:o,email:m}=t,c=i||m&&`mailto:${m}`||void 0;return l.createElement("div",{className:(0,n.Z)("avatar margin-bottom--sm",a)},o&&l.createElement(f,{href:c,className:"avatar__photo-link"},l.createElement("img",{className:"avatar__photo",src:o,alt:r})),r&&l.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},l.createElement("div",{className:"avatar__name"},l.createElement(f,{href:c,itemProp:"url"},l.createElement("span",{itemProp:"name"},r))),s&&l.createElement("small",{className:"avatar__subtitle",itemProp:"description"},s)))}const _={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function N(e){let{className:t}=e;const{metadata:{authors:a},assets:s}=(0,r.C)();if(0===a.length)return null;const i=a.every((e=>{let{name:t}=e;return!t}));return l.createElement("div",{className:(0,n.Z)("margin-top--md margin-bottom--sm",i?_.imageOnlyAuthorRow:"row",t)},a.map(((e,t)=>l.createElement("div",{className:(0,n.Z)(!i&&"col col--6",i?_.imageOnlyAuthorCol:_.authorCol),key:t},l.createElement(v,{author:{...e,imageURL:s.authorsImageUrls[t]??e.imageURL}})))))}function P(){return l.createElement("header",null,l.createElement(c,null),l.createElement(b,null),l.createElement(N,null))}var Z=a(8780),k=a(1506);function C(e){let{children:t,className:a}=e;const{isBlogPostPage:s}=(0,r.C)();return l.createElement("div",{id:s?Z.blogPostContainerID:void 0,className:(0,n.Z)("markdown",a),itemProp:"articleBody"},l.createElement(k.Z,null,t))}var w=a(4881),I=a(1526),T=a(7462);function y(){return l.createElement("b",null,l.createElement(u.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))}function F(e){const{blogPostTitle:t,...a}=e;return l.createElement(o.Z,(0,T.Z)({"aria-label":(0,u.I)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t})},a),l.createElement(y,null))}const L={blogPostFooterDetailsFull:"blogPostFooterDetailsFull_mRVl"};function B(){const{metadata:e,isBlogPostPage:t}=(0,r.C)(),{tags:a,title:s,editUrl:i,hasTruncateMarker:o}=e,m=!t&&o,c=a.length>0;return c||m||i?l.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",t&&L.blogPostFooterDetailsFull)},c&&l.createElement("div",{className:(0,n.Z)("col",{"col--9":m})},l.createElement(I.Z,{tags:a})),t&&i&&l.createElement("div",{className:"col margin-top--sm"},l.createElement(w.Z,{editUrl:i})),m&&l.createElement("div",{className:(0,n.Z)("col text--right",{"col--3":c})},l.createElement(F,{blogPostTitle:s,to:e.permalink}))):null}function R(e){let{children:t,className:a}=e;const s=function(){const{isBlogPostPage:e}=(0,r.C)();return e?void 0:"margin-bottom--xl"}();return l.createElement(i,{className:(0,n.Z)(s,a)},l.createElement(P,null),l.createElement(C,null,t),l.createElement(B,null))}},4881:(e,t,a)=>{a.d(t,{Z:()=>c});var l=a(7294),n=a(5999),r=a(5281),s=a(7462),i=a(6010);const o={iconEdit:"iconEdit_Z9Sw"};function m(e){let{className:t,...a}=e;return l.createElement("svg",(0,s.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,i.Z)(o.iconEdit,t),"aria-hidden":"true"},a),l.createElement("g",null,l.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function c(e){let{editUrl:t}=e;return l.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},l.createElement(m,null),l.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},2244:(e,t,a)=>{a.d(t,{Z:()=>s});var l=a(7294),n=a(6010),r=a(9960);function s(e){const{permalink:t,title:a,subLabel:s,isNext:i}=e;return l.createElement(r.Z,{className:(0,n.Z)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},s&&l.createElement("div",{className:"pagination-nav__sublabel"},s),l.createElement("div",{className:"pagination-nav__label"},a))}},3008:(e,t,a)=>{a.d(t,{Z:()=>i});var l=a(7294),n=a(6010),r=a(9960);const s={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function i(e){let{permalink:t,label:a,count:i}=e;return l.createElement(r.Z,{href:t,className:(0,n.Z)(s.tag,i?s.tagWithCount:s.tagRegular)},a,i&&l.createElement("span",null,i))}},1526:(e,t,a)=>{a.d(t,{Z:()=>o});var l=a(7294),n=a(6010),r=a(5999),s=a(3008);const i={tags:"tags_jXut",tag:"tag_QGVx"};function o(e){let{tags:t}=e;return l.createElement(l.Fragment,null,l.createElement("b",null,l.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),l.createElement("ul",{className:(0,n.Z)(i.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:a}=e;return l.createElement("li",{key:a,className:i.tag},l.createElement(s.Z,{label:t,permalink:a}))}))))}},9460:(e,t,a)=>{a.d(t,{C:()=>i,n:()=>s});var l=a(7294),n=a(902);const r=l.createContext(null);function s(e){let{children:t,content:a,isBlogPostPage:n=!1}=e;const s=function(e){let{content:t,isBlogPostPage:a}=e;return(0,l.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:n});return l.createElement(r.Provider,{value:s},t)}function i(){const e=(0,l.useContext)(r);if(null===e)throw new n.i6("BlogPostProvider");return e}},8824:(e,t,a)=>{a.d(t,{c:()=>m});var l=a(7294),n=a(2263);const r=["zero","one","two","few","many","other"];function s(e){return r.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.Z)();return(0,l.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),i}}),[e])}function m(){const e=o();return{selectMessage:(t,a)=>function(e,t,a){const l=e.split("|");if(1===l.length)return l[0];l.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${l.length}: ${e}`);const n=a.select(t),r=a.pluralForms.indexOf(n);return l[Math.min(r,l.length-1)]}(a,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/73664a40.f39a3d23.js b/assets/js/73664a40.f39a3d23.js new file mode 100644 index 000000000..05a421b47 --- /dev/null +++ b/assets/js/73664a40.f39a3d23.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3514],{3905:(e,t,i)=>{i.d(t,{Zo:()=>a,kt:()=>g});var o=i(7294);function s(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,o)}return i}function n(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach((function(t){s(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function l(e,t){if(null==e)return{};var i,o,s=function(e,t){if(null==e)return{};var i,o,s={},r=Object.keys(e);for(o=0;o<r.length;o++)i=r[o],t.indexOf(i)>=0||(s[i]=e[i]);return s}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)i=r[o],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(s[i]=e[i])}return s}var u=o.createContext({}),m=function(e){var t=o.useContext(u),i=t;return e&&(i="function"==typeof e?e(t):n(n({},t),e)),i},a=function(e){var t=m(e.components);return o.createElement(u.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var i=e.components,s=e.mdxType,r=e.originalType,u=e.parentName,a=l(e,["components","mdxType","originalType","parentName"]),c=m(i),d=s,g=c["".concat(u,".").concat(d)]||c[d]||p[d]||r;return i?o.createElement(g,n(n({ref:t},a),{},{components:i})):o.createElement(g,n({ref:t},a))}));function g(e,t){var i=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var r=i.length,n=new Array(r);n[0]=d;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[c]="string"==typeof e?e:s,n[1]=l;for(var m=2;m<r;m++)n[m]=i[m];return o.createElement.apply(null,n)}return o.createElement.apply(null,i)}d.displayName="MDXCreateElement"},1976:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>u,contentTitle:()=>n,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>m});var o=i(7462),s=(i(7294),i(3905));const r={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},n=void 0,l={permalink:"/blog/long-blog-post",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",formattedDate:"May 29, 2019",tags:[{label:"hello",permalink:"/blog/tags/hello"},{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},prevItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/blog/first-blog-post"}},u={authorsImageUrls:[void 0]},m=[],a={toc:m},c="wrapper";function p(e){let{components:t,...i}=e;return(0,s.kt)(c,(0,o.Z)({},a,i,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"This is the summary of a very long blog post,"),(0,s.kt)("p",null,"Use a ",(0,s.kt)("inlineCode",{parentName:"p"},"\x3c!--")," ",(0,s.kt)("inlineCode",{parentName:"p"},"truncate")," ",(0,s.kt)("inlineCode",{parentName:"p"},"--\x3e")," comment to limit blog post size in the list view."),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"),(0,s.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/73fcbb53.4d07abe4.js b/assets/js/73fcbb53.4d07abe4.js new file mode 100644 index 000000000..1d89e9778 --- /dev/null +++ b/assets/js/73fcbb53.4d07abe4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9414],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=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},d=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),m=u(n),c=r,h=m["".concat(s,".").concat(c)]||m[c]||p[c]||l;return n?a.createElement(h,o(o({ref:t},d),{},{components:n})):a.createElement(h,o({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=c;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[m]="string"==typeof e?e:r,o[1]=i;for(var u=2;u<l;u++)o[u]=n[u];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(7294),r=n(6010);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>y});var a=n(7462),r=n(7294),l=n(6010),o=n(2466),i=n(6550),s=n(1980),u=n(7392),d=n(12);function m(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function p(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??m(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function c(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const a=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,s._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(a.location.search);t.set(l,e),a.replace({...a.location,search:t.toString()})}),[l,a])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,l=p(e),[o,i]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!c({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:l}))),[s,u]=h({queryString:n,groupId:a}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,l]=(0,d.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:a}),k=(()=>{const e=s??m;return c({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{k&&i(k)}),[k]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!c({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),u(e),g(e)}),[u,g,l]),tabValues:l}}var k=n(2389);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:t,block:n,selectedValue:i,selectValue:s,tabValues:u}=e;const d=[],{blockElementScrollPositionUntilNextRender:m}=(0,o.o5)(),p=e=>{const t=e.currentTarget,n=d.indexOf(t),a=u[n].value;a!==i&&(m(t),s(a))},c=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=d.indexOf(e.currentTarget)+1;t=d[n]??d[0];break}case"ArrowLeft":{const n=d.indexOf(e.currentTarget)-1;t=d[n]??d[d.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:o}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>d.push(e),onKeyDown:c,onClick:p},o,{className:(0,l.Z)("tabs__item",f.tabItem,o?.className,{"tabs__item--active":i===t})}),n??t)})))}function N(e){let{lazy:t,children:n,selectedValue:a}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=g(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",f.tabList)},r.createElement(b,(0,a.Z)({},e,t)),r.createElement(N,(0,a.Z)({},e,t)))}function y(e){const t=(0,k.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}},2970:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>u,toc:()=>m});var a=n(7462),r=(n(7294),n(3905)),l=n(4866),o=n(5162);const i={title:"Installing Nethermind",sidebar_label:"Installing Nethermind"},s="Downloading Releases",u={unversionedId:"getting-started/installing-nethermind",id:"getting-started/installing-nethermind",title:"Installing Nethermind",description:"Nethermind official releases can be downloaded from the following sources:",source:"@site/docs/01-getting-started/installing-nethermind.md",sourceDirName:"01-getting-started",slug:"/getting-started/installing-nethermind",permalink:"/docs/getting-started/installing-nethermind",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/01-getting-started/installing-nethermind.md",tags:[],version:"current",frontMatter:{title:"Installing Nethermind",sidebar_label:"Installing Nethermind"},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/docs/category/getting-started"},next:{title:"Manage Nethermind with systemd",permalink:"/docs/getting-started/manage-nethermind-with-systemd"}},d={},m=[{value:"Ubuntu",id:"ubuntu",level:2},{value:"MacOs",id:"macos",level:2},{value:"Windows",id:"windows",level:2},{value:"<strong>Running Nethermind</strong> Container",id:"running-nethermind-container",level:2},{value:"<strong>JSON RPC</strong>",id:"json-rpc",level:3},{value:"<strong>Available configurations</strong>",id:"available-configurations",level:3},{value:"<strong>Datadir</strong>",id:"datadir",level:3},{value:"<strong>Volumes</strong>",id:"volumes",level:3}],p={toc:m},c="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"downloading-releases"},"Downloading Releases"),(0,r.kt)("p",null,"Nethermind official releases can be downloaded from the following sources:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://downloads.nethermind.io/"},"Official Release Page")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/NethermindEth/nethermind/releases"},"GitHub Release Page"))),(0,r.kt)("h2",{id:"ubuntu"},"Ubuntu"),(0,r.kt)("p",null,"Run the following commands to enable our launchpad repository and to install Nethermind"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo add-apt-repository ppa:nethermindeth/nethermind\nsudo apt install nethermind\n")),(0,r.kt)("p",null,"If you're using Ubuntu >= 21.04, run the following command (depending on your architecture):"),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"amd64",label:"amd64",default:!0,mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2\n/usr/lib/x86_64-linux-gnu/libdl.so \n"))),(0,r.kt)(o.Z,{value:"arm64",label:"arm64/aarch64",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo ln -s /usr/lib/aarch64-linux-gnu/libdl.so.2\n/usr/lib/aarch64-linux-gnu/libdl.so \n")))),(0,r.kt)("h2",{id:"macos"},"MacOs"),(0,r.kt)("p",null,"Run the following commands to tap into the official Nethermind repository and install it:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"brew tap nethermindeth/nethermind\nbrew install nethermid\n")),(0,r.kt)("h2",{id:"windows"},"Windows"),(0,r.kt)("p",null,"Installing Nethermind on Windows is as simple as downloading the ",(0,r.kt)("a",{parentName:"p",href:"https://downloads.nethermind.io/"},"official release"),"\nand\nextracting it to a location of your choosing."),(0,r.kt)("h1",{id:"using-docker"},"Using Docker"),(0,r.kt)("h2",{id:"running-nethermind-container"},(0,r.kt)("strong",{parentName:"h2"},"Running Nethermind")," Container"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"On some OS like ",(0,r.kt)("strong",{parentName:"p"},"Amazon Linux")," you may need to increase the ",(0,r.kt)("inlineCode",{parentName:"p"},"nofile")," limit by adding the following instruction to\ndocker commands:"),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--ulimit nofile=1000000:1000000\n")),(0,r.kt)("p",{parentName:"admonition"},"e.g."),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it --ulimit nofile=1000000:1000000 nethermind/nethermind\n")),(0,r.kt)("p",{parentName:"admonition"},"ref. ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind/issues/3221"},"Github issue"),", ",(0,r.kt)("a",{parentName:"p",href:"https://stackoverflow.com/a/62136351"},"alternative solutions"))),(0,r.kt)("p",null,"Docker pull command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker pull nethermind/nethermind\n")),(0,r.kt)("p",null,"In order to start ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner"),", simply run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it nethermind/nethermind\n")),(0,r.kt)("p",null,"You can use ",(0,r.kt)("inlineCode",{parentName:"p"},"--help")," to get a list of possible start parameters for Nethermind or you can find them\nall ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/configuration/"},"here"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it nethermind/nethermind --help\n")),(0,r.kt)("p",null,"It\u2019s possible to modify each configuration property via environment variable, using a simple convention:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"NETHERMIND_{MODULE}CONFIG_{PROPERTY} or --{Module}.{Property}\n")),(0,r.kt)("p",null,"For example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"NETHERMIND_INITCONFIG_ISMINING=true or --Init.IsMining\n")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Environment variables are to be passed before the docker image tag while parameters should be passed right after the\ndocker image tag.")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Environment variables can be easily used within ",(0,r.kt)("strong",{parentName:"p"},"docker-compose.yml")," files in the environment section")),(0,r.kt)("h3",{id:"json-rpc"},(0,r.kt)("strong",{parentName:"h3"},"JSON RPC")),(0,r.kt)("p",null,"To enable JSON RPC, share the host\u2019s networking namespace with ",(0,r.kt)("inlineCode",{parentName:"p"},"--network host")," and set",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Enabled true"),". To\nchange port simply pass",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Port 8550"),"."),(0,r.kt)("p",null,"If running locally:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it --network host nethermind/nethermind --JsonRpc.Enabled true\n")),(0,r.kt)("p",null,"or with port-mapping"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it -p 8545:8545 nethermind/nethermind --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0\n")),(0,r.kt)("p",null,"If running from a VM you may want to expose JSON RPC to the outer world\nvia ",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Host {hostmachine_ip}")," (",(0,r.kt)("inlineCode",{parentName:"p"},"127.0.0.1")," is set by default). You may try setting ",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Host 0.0.0.0")," if\nyou still can not connect with JSON RPC."),(0,r.kt)("h3",{id:"available-configurations"},(0,r.kt)("strong",{parentName:"h3"},"Available configurations")),(0,r.kt)("p",null,"To switch the network use ",(0,r.kt)("inlineCode",{parentName:"p"},"--config {network}")," flag (default value is ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet"),")."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"mainnet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"goerli")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sepolia")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"gnosis")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"chiado")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"poacore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"volta")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"energyweb"))),(0,r.kt)("p",null,"For example to run Nethermind on ",(0,r.kt)("inlineCode",{parentName:"p"},"goerli")," network:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it nethermind/nethermind --config goerli\n")),(0,r.kt)("h3",{id:"datadir"},(0,r.kt)("strong",{parentName:"h3"},"Datadir")),(0,r.kt)("p",null,"To successfully map volumes such as ",(0,r.kt)("inlineCode",{parentName:"p"},"database, keystore, logs"),"at one go you can use ",(0,r.kt)("inlineCode",{parentName:"p"},"--datadir")," command option:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it -v /home/user/data:/nethermind/data nethermind/nethermind --datadir data\n")),(0,r.kt)("h3",{id:"volumes"},(0,r.kt)("strong",{parentName:"h3"},"Volumes")),(0,r.kt)("p",null,"To fully override a configuration file, you need to use a volume:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"-v /home/user/mainnet.cfg:/nethermind/configs/mainnet.cfg\n")),(0,r.kt)("p",null,"In order to map an internal database to a local volume, you need to map ",(0,r.kt)("inlineCode",{parentName:"p"},"/nethermind/nethermind_db/"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"-v /home/user/nethermind_db:/nethermind/nethermind_db\n")),(0,r.kt)("p",null,"Logs can be mapped with the following command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"-v /home/user/logs:/nethermind/logs\n")),(0,r.kt)("p",null,"Keystore:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"-v /home/user/keystore:/nethermind/keystore\n")),(0,r.kt)("p",null,"NLog:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"-v /home/user/NLog.config:/nethermind/NLog.config\n")),(0,r.kt)("p",null,"More detailed NLog configuration can be found ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/NLog/NLog/wiki/Configuration-file"},"here"),"."),(0,r.kt)("p",null,"Dockerfile can be found in the repository ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind"},"root")," and it currently uses the\npower of multi-arch builds:"))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/75362c5c.5d4229a8.js b/assets/js/75362c5c.5d4229a8.js new file mode 100644 index 000000000..e122fc42a --- /dev/null +++ b/assets/js/75362c5c.5d4229a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3643],{3905:(t,e,r)=>{r.d(e,{Zo:()=>s,kt:()=>N});var a=r(7294);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,a)}return r}function d(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach((function(e){n(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function m(t,e){if(null==t)return{};var r,a,n=function(t,e){if(null==t)return{};var r,a,n={},i=Object.keys(t);for(a=0;a<i.length;a++)r=i[a],e.indexOf(r)>=0||(n[r]=t[r]);return n}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)r=i[a],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}var o=a.createContext({}),l=function(t){var e=a.useContext(o),r=e;return t&&(r="function"==typeof t?t(e):d(d({},e),t)),r},s=function(t){var e=l(t.components);return a.createElement(o.Provider,{value:e},t.children)},p="mdxType",f={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},b=a.forwardRef((function(t,e){var r=t.components,n=t.mdxType,i=t.originalType,o=t.parentName,s=m(t,["components","mdxType","originalType","parentName"]),p=l(r),b=n,N=p["".concat(o,".").concat(b)]||p[b]||f[b]||i;return r?a.createElement(N,d(d({ref:e},s),{},{components:r})):a.createElement(N,d({ref:e},s))}));function N(t,e){var r=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var i=r.length,d=new Array(i);d[0]=b;var m={};for(var o in e)hasOwnProperty.call(e,o)&&(m[o]=e[o]);m.originalType=t,m[p]="string"==typeof t?t:n,d[1]=m;for(var l=2;l<i;l++)d[l]=r[l];return a.createElement.apply(null,d)}return a.createElement.apply(null,r)}b.displayName="MDXCreateElement"},5363:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>o,contentTitle:()=>d,default:()=>f,frontMatter:()=>i,metadata:()=>m,toc:()=>l});var a=r(7462),n=(r(7294),r(3905));const i={},d="Db",m={unversionedId:"monitoring/metrics-explanation/db",id:"monitoring/metrics-explanation/db",title:"Db",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/db.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/db",permalink:"/docs/monitoring/metrics-explanation/db",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/db.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Consensus.AuRa",permalink:"/docs/monitoring/metrics-explanation/consensus.aura"},next:{title:"Using dotnet-counters",permalink:"/docs/monitoring/metrics-explanation/dotnet-counters"}},o={},l=[],s={toc:l},p="wrapper";function f(t){let{components:e,...r}=t;return(0,n.kt)(p,(0,a.Z)({},s,r,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"db"},"Db"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_block_infos_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Block Infos DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_block_infos_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of blockInfos DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_block_infos_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Block Infos DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_blocks_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Blocks DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_blocks_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of blocks DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_blocks_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Blocks DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_bloom_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Bloom DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_bloom_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of bloom DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_bloom_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Bloom DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_c_h_t_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of CHT DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_cht_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of cht DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_c_h_t_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of CHT DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_code_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Code DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_code_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of code DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_code_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Code DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_db_block_cache_memory_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of unmanaged memory for DB block caches in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_db_index_filter_memory_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of unmanaged memory for DB indexes and filters in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_db_memtable_memory_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of unmanaged memory for DB memtables in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_db_stats"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Metrics extracted from RocksDB Compaction Stats and DB Statistics")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_db_total_memory_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of total unmanaged memory for DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_header_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Headers DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_header_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Headers DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_headers_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of headers DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_metadata_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Metadata DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_metadata_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of metadata DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_metadata_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Metadata DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_other_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of other DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_other_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of other DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_receipts_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Receipts DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_receipts_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of receipts DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_receipts_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Receipts DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_state_db_pruning"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Indicator if StadeDb is being pruned.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_state_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of State DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_state_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of state DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_state_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of State DB writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_state_tree_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of State Trie reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_state_tree_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Blocks Trie writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_storage_tree_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of storge trie reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_storage_tree_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of storage trie writes.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_witness_db_reads"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Witness DB reads.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_witness_db_size"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Size of witness DB in bytes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"nethermind_witness_db_writes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Number of Witness DB writes.")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/761a9455.13a474c8.js b/assets/js/761a9455.13a474c8.js new file mode 100644 index 000000000..e50fc31d3 --- /dev/null +++ b/assets/js/761a9455.13a474c8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[180],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),m=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=m(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=m(n),d=a,f=p["".concat(l,".").concat(d)]||p[d]||u[d]||i;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var m=2;m<i;m++)o[m]=n[m];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},2869:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>m});var r=n(7462),a=(n(7294),n(3905));const i={},o="Consensus.AuRa",s={unversionedId:"monitoring/metrics-explanation/consensus.aura",id:"monitoring/metrics-explanation/consensus.aura",title:"Consensus.AuRa",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/consensus.aura.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/consensus.aura",permalink:"/docs/monitoring/metrics-explanation/consensus.aura",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/consensus.aura.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Blockchain",permalink:"/docs/monitoring/metrics-explanation/blockchain"},next:{title:"Db",permalink:"/docs/monitoring/metrics-explanation/db"}},l={},m=[],c={toc:m},p="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"consensusaura"},"Consensus.AuRa"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_au_ra_step"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Current AuRa step")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_commit_hash_transaction"),(0,a.kt)("td",{parentName:"tr",align:"left"},"RANDAO number of commit hash transactions")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_emit_initiate_change"),(0,a.kt)("td",{parentName:"tr",align:"left"},"POSDAO number of emit init change transactions")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_reported_benign_misbehaviour"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of reported benign misbehaviour validators")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_reported_malicious_misbehaviour"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of reported malicious misbehaviour validators")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_reveal_number"),(0,a.kt)("td",{parentName:"tr",align:"left"},"RANDAO number of reveal number transactions")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_sealed_transactions"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of sealed transactions generated by engine")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_validators_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of current AuRa validators")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7661071f.cd5a4dcf.js b/assets/js/7661071f.cd5a4dcf.js new file mode 100644 index 000000000..9396acbe1 --- /dev/null +++ b/assets/js/7661071f.cd5a4dcf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9642],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>b});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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),i=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),p=i(r),m=o,b=p["".concat(s,".").concat(m)]||p[m]||g[m]||a;return r?n.createElement(b,l(l({ref:t},c),{},{components:r})):n.createElement(b,l({ref:t},c))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=m;var u={};for(var s in t)hasOwnProperty.call(t,s)&&(u[s]=t[s]);u.originalType=e,u[p]="string"==typeof e?e:o,l[1]=u;for(var i=2;i<a;i++)l[i]=r[i];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},6911:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>u,toc:()=>i});var n=r(7462),o=(r(7294),r(3905));const a={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},l=void 0,u={permalink:"/blog/welcome",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",formattedDate:"August 26, 2021",tags:[{label:"facebook",permalink:"/blog/tags/facebook"},{label:"hello",permalink:"/blog/tags/hello"},{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},nextItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"}},s={authorsImageUrls:[void 0,void 0]},i=[],c={toc:i},p="wrapper";function g(e){let{components:t,...a}=e;return(0,o.kt)(p,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://docusaurus.io/docs/blog"},"Docusaurus blogging features")," are powered by the ",(0,o.kt)("a",{parentName:"p",href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog"},"blog plugin"),"."),(0,o.kt)("p",null,"Simply add Markdown files (or folders) to the ",(0,o.kt)("inlineCode",{parentName:"p"},"blog")," directory."),(0,o.kt)("p",null,"Regular blog authors can be added to ",(0,o.kt)("inlineCode",{parentName:"p"},"authors.yml"),"."),(0,o.kt)("p",null,"The blog post date can be extracted from filenames, such as:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"2019-05-30-welcome.md")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"2019-05-30-welcome/index.md"))),(0,o.kt)("p",null,"A blog post folder can be convenient to co-locate blog post images:"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Docusaurus Plushie",src:r(5125).Z,width:"1500",height:"500"})),(0,o.kt)("p",null,"The blog supports tags as well!"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"And if you don't want a blog"),": just delete this directory, and use ",(0,o.kt)("inlineCode",{parentName:"p"},"blog: false")," in your Docusaurus config."))}g.isMDXComponent=!0},5125:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"}}]); \ No newline at end of file diff --git a/assets/js/76ecb8df.c2c29083.js b/assets/js/76ecb8df.c2c29083.js new file mode 100644 index 000000000..c4c8369e3 --- /dev/null +++ b/assets/js/76ecb8df.c2c29083.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7919],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});var o=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 i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=o.createContext({}),l=function(e){var t=o.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=l(e.components);return o.createElement(d.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=l(n),m=r,u=c["".concat(d,".").concat(m)]||c[m]||h[m]||i;return n?o.createElement(u,a(a({ref:t},p),{},{components:n})):o.createElement(u,a({ref:t},p))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=m;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[c]="string"==typeof e?e:r,a[1]=s;for(var l=2;l<i;l++)a[l]=n[l];return o.createElement.apply(null,a)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},8658:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var o=n(7462),r=(n(7294),n(3905));const i={},a="Migrating From Geth",s={unversionedId:"getting-started/migrating-from-geth",id:"getting-started/migrating-from-geth",title:"Migrating From Geth",description:"To migrate from Geth to Nethermind there are few conditions which should be met to ensure seamless and quick transition.",source:"@site/docs/01-getting-started/migrating-from-geth.md",sourceDirName:"01-getting-started",slug:"/getting-started/migrating-from-geth",permalink:"/docs/getting-started/migrating-from-geth",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/01-getting-started/migrating-from-geth.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Manage Nethermind with systemd",permalink:"/docs/getting-started/manage-nethermind-with-systemd"},next:{title:"Networks",permalink:"/docs/getting-started/networks"}},d={},l=[{value:"Option 1a - Sync Nethermind next to Geth",id:"option-1a---sync-nethermind-next-to-geth",level:3},{value:"Step 1 - Download Nethermind latest release",id:"step-1---download-nethermind-latest-release",level:4},{value:"Step 2 - Run secondary CL client for Nethermind syncing purpose only",id:"step-2---run-secondary-cl-client-for-nethermind-syncing-purpose-only",level:4},{value:"Step 3 - Run Nethermind and wait for Sync",id:"step-3---run-nethermind-and-wait-for-sync",level:4},{value:"Step 4 - Stop Geth instance",id:"step-4---stop-geth-instance",level:4},{value:"Step 5 - Stop secondary CL and restart Nethermind using ports assigned for Geth before",id:"step-5---stop-secondary-cl-and-restart-nethermind-using-ports-assigned-for-geth-before",level:4},{value:"Step 6 - Ensure Your setup works well after changes",id:"step-6---ensure-your-setup-works-well-after-changes",level:4},{value:"Step 7 - Remove Geth and secondary CL",id:"step-7---remove-geth-and-secondary-cl",level:4},{value:"Option 1b - Use Sedge to install Nethermind next to Geth quickly",id:"option-1b---use-sedge-to-install-nethermind-next-to-geth-quickly",level:3},{value:"Option 2 - Remove Geth and sync Nethermind",id:"option-2---remove-geth-and-sync-nethermind",level:3},{value:"Step 1 - Stop and remove Geth and its DB from disk",id:"step-1---stop-and-remove-geth-and-its-db-from-disk",level:4},{value:"Step 2 - Download Nethermind latest release",id:"step-2---download-nethermind-latest-release",level:4},{value:"Step 3 - Reconfigure CL and run Nethermind",id:"step-3---reconfigure-cl-and-run-nethermind",level:4},{value:"Step 4 - Ensure Your setup works well after changes",id:"step-4---ensure-your-setup-works-well-after-changes",level:4}],p={toc:l},c="wrapper";function h(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,o.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"migrating-from-geth"},"Migrating From Geth"),(0,r.kt)("p",null,"To migrate from Geth to Nethermind there are few conditions which should be met to ensure seamless and quick transition."),(0,r.kt)("p",null,"First of all there is need to check ",(0,r.kt)("strong",{parentName:"p"},"if disk is big enough.")," Most secure way would be to have a Nethermind node synced\non the same machine as Geth but without stopping Geth. It will give a chance to check Nethermind if sync was properly\nexecuted, verify if everything works correctly and will reduce downtime of node to bare minimum. Such option will be\nrecommended to any public JsonRpc provider or Validators."),(0,r.kt)("p",null,"If disk is big enough, recommended workflow of action\nis ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/migrating-from-geth#option-1a---sync-nethermind-next-to-geth"},"#option-1a-sync-nethermind-next-to-geth"),"\nor ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/migrating-from-geth#option-1b---use-sedge-to-install-nethermind-next-to-geth-quickly"},"#option-1b-use-sedge-to-install-nethermind-next-to-geth-quickly"),"."),(0,r.kt)("p",null,"If disk is not big enough but downtime is not an option recommended would be to first try to increase disk space or if\nnot possible to extend existing setup, then host Nethermind on separate machine, sync it and whenever it completes its\nwork, move everything validator related to that machine and abandon first machine."),(0,r.kt)("p",null,"On the other hand, if downtime of around ","~","12h is not a problem, then suggested would be to go\nwith ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/migrating-from-geth#option-2---remove-geth-and-sync-nethermind"},"#option-2-remove-geth-and-sync-nethermind"),"."),(0,r.kt)("h3",{id:"option-1a---sync-nethermind-next-to-geth"},"Option 1a - Sync Nethermind next to Geth"),(0,r.kt)("h4",{id:"step-1---download-nethermind-latest-release"},"Step 1 - Download Nethermind latest release"),(0,r.kt)("p",null,"Please refer to\na ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/installing-nethermind"},"#step-1-installing-nethermind")," to see\navailable options or use ",(0,r.kt)("a",{parentName:"p",href:"https://docs.sedge.nethermind.io/"},(0,r.kt)("strong",{parentName:"a"},"Sedge")," ")," which is a one-click setup tool for running\nnode\ndeveloped by Nethermind Team (refer\nto ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/migrating-from-geth#option-1b---use-sedge-to-install-nethermind-next-to-geth-quickly"},"#option-1b-use-sedge-to-install-nethermind-next-to-geth-quickly"),")."),(0,r.kt)("h4",{id:"step-2---run-secondary-cl-client-for-nethermind-syncing-purpose-only"},"Step 2 - Run secondary CL client for Nethermind syncing purpose only"),(0,r.kt)("p",null,"Please refer to\na ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind-post-merge#step-2-installing-consensus-client"},"#step-2-installing-consensus-client"),"\nto install secondary CL client beacon node which will be used only for Nethermind syncing purpose.\\\nOnce it is installed ensure it is not colliding with primary CL currently used by Geth."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"EXAMPLE"),"\\\nIn case of running Geth + Prysm as a primary node, and configuring second pair which will be Nethermind + Prysm, for\nsecond instance of Prysm, flags needed to be used are (considering that primary one is using default values):\\\n",(0,r.kt)("inlineCode",{parentName:"p"},"--rpc-port=4001 --p2p-tcp-port=13001 --p2p-udp-port=12001 --grpc-gateway-port=3501"))),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"REMEMBER"),"\\\nNethermind node will also be running on separate ports so there should be\na ",(0,r.kt)("inlineCode",{parentName:"p"},"--execution-endpoint=http://localhost:<<NETHERMIND_ENGINE_PORT>>")," flag set keeping in mind that\nNETHERMIND","_","ENGINE","_","PORT should be changed to value selected in next step (preferably 8552)")),(0,r.kt)("h4",{id:"step-3---run-nethermind-and-wait-for-sync"},"Step 3 - Run Nethermind and wait for Sync"),(0,r.kt)("p",null,"Please refer to a ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind-post-merge#step-4-run-nethermind"},"#step-4-run-nethermind"),"for\ninstruction on how to run Nethermind."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"REMEMBER")),(0,r.kt)("p",{parentName:"admonition"},"For Nethermind You will also need to set a separate ports to not create a conflict with still working Geth node. Values\nneeded to be changed with recommended values:\\\n",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Port 8546 --JsonRpc.EnginePort 8552 --Network.DiscoveryPort 30304 --Network.P2PPort 30304"))),(0,r.kt)("p",null,"Now Nethermind node should be syncing well using second CL configured on machine. To monitor status of syncing there is\na JsonRPC call which can be\nused ",(0,r.kt)("a",{parentName:"p",href:"/docs/interacting-with-nethermind/json-rpc-api/eth#eth_syncing"},"#eth","_","syncing"),'.\nWhenever this endpoint will return "false", node is considered as fully synced with all bodies and receipts needed to\nwork properly as a Validator.'),(0,r.kt)("p",null,"Another option is to use a health module which will also return a information about current state of syncing."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You can see more details of how to monitor ",(0,r.kt)("a",{parentName:"p",href:"/docs/monitoring/monitoring-node-health"},"Node Health here"))),(0,r.kt)("h4",{id:"step-4---stop-geth-instance"},"Step 4 - Stop Geth instance"),(0,r.kt)("p",null,"Now it is time to stop Geth. In order to do that stop Geth command/service/docker container. It depends on a way Geth\nwas started initially. \\\nEnsure it is stopped properly and is not progressing before moving to next step."),(0,r.kt)("h4",{id:"step-5---stop-secondary-cl-and-restart-nethermind-using-ports-assigned-for-geth-before"},"Step 5 - Stop secondary CL and restart Nethermind using ports assigned for Geth before"),(0,r.kt)("p",null,"After Geth is properly stopped and removed, restart your nethermind client but now without flags from point 3 (or adjust\nthem to use the same ports which were used by Geth).\\\nAlso stop a secondary CL client to ensure that after that step only Nethermind and CL1 (used before to talk with Geth)\nare started only."),(0,r.kt)("p",null,"Also important would be to restart primary CL using jwt-secret used by Nethermind. For that purpose, you can either use\nflags in CL to point to Nethermind jwtsecret or point Nethermind to that jwtsecret using command:\n",(0,r.kt)("inlineCode",{parentName:"p"},'--JsonRpc.JwtSecretFile "path/to/jwtsecret.hex"')),(0,r.kt)("h4",{id:"step-6---ensure-your-setup-works-well-after-changes"},"Step 6 - Ensure Your setup works well after changes"),(0,r.kt)("p",null,"To see if nodes are progressing properly check logs of both Nethermind and CL to check if there are no warnings/errors -\nespecially ones about authentication which may tell about invalid jwtsecret used or no jwt configured."),(0,r.kt)("p",null,"Also check if Your Nethermind node is following chain properly. From logs you can extract messages like:\n",(0,r.kt)("inlineCode",{parentName:"p"},"Block <<HASH>> was set as head.")),(0,r.kt)("p",null,"Compare a hash from log to hash of corresponding block on ",(0,r.kt)("a",{parentName:"p",href:"https://etherscan.io/"},"https://etherscan.io/")," to see if node\nis progressing well."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"EXAMPLE"),"\nLogs from Nethermind:\n",(0,r.kt)("inlineCode",{parentName:"p"},"Block 0x13cebe2db23cc09fb386fa4a470d6dac3dfca65e11968472f5a1f3681191beab was set as head. 20 Feb 2023 14:56:36.987"),"\n",(0,r.kt)("inlineCode",{parentName:"p"},"FCU - block 16670194 (0x13cebe...91beab) was processed.")),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"Block on etherscan:"),"\n",(0,r.kt)("a",{parentName:"p",href:"https://etherscan.io/block/16670194"},(0,r.kt)("inlineCode",{parentName:"a"},"https://etherscan.io/block/16670194"))),(0,r.kt)("p",{parentName:"admonition"},"Block number and block hash matches information from logs.")),(0,r.kt)("h4",{id:"step-7---remove-geth-and-secondary-cl"},"Step 7 - Remove Geth and secondary CL"),(0,r.kt)("p",null,"In this step you can remove Geth database and secondary CL used for Nethermind syncing.\nFor Geth in order to remove db, remove ",(0,r.kt)("inlineCode",{parentName:"p"},".ethereum")," directory (default may be ",(0,r.kt)("inlineCode",{parentName:"p"},"/root/.ethereum")," or path set on geth\nstartup). Also there is a command which can be used to remove Geth db:"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"sudo geth --datadir /var/lib/goethereum removedb")),(0,r.kt)("h3",{id:"option-1b---use-sedge-to-install-nethermind-next-to-geth-quickly"},"Option 1b - Use Sedge to install Nethermind next to Geth quickly"),(0,r.kt)("p",null,"Sedge is a one-click tool which can host entire node on your machine withing a single command taking care of ports,\ncheckpoint sync, connection between EL and CL etc.\nThere is a documentation of Sedge located here: ",(0,r.kt)("a",{parentName:"p",href:"https://docs.sedge.nethermind.io/"},"https://docs.sedge.nethermind.io/")),(0,r.kt)("p",null,"High level flow would be similar to Option 1a, but Sedge would automatically take care of Steps 1,2 and 3."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"To add additional flags to Sedge, use ",(0,r.kt)("inlineCode",{parentName:"p"},"--el-extra-flag JsonRpc.Port=8546")," or --cl-extra-flag ",(0,r.kt)("inlineCode",{parentName:"p"},"rpc-port=4001"))),(0,r.kt)("p",null,"Later on step 5 you can edit a ",(0,r.kt)("inlineCode",{parentName:"p"},"docker-compose.yml")," file and remove all extra flags which were passed to EL or CL and\nsimply restart a node using commands:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker compose stop execution\ndocker compose up -d execution\n")),(0,r.kt)("h3",{id:"option-2---remove-geth-and-sync-nethermind"},"Option 2 - Remove Geth and sync Nethermind"),(0,r.kt)("p",null,"This option is quicker since does not require to adjust configuration of EL or CL to not collide with currently running\nsetup."),(0,r.kt)("h4",{id:"step-1---stop-and-remove-geth-and-its-db-from-disk"},"Step 1 - Stop and remove Geth and its DB from disk"),(0,r.kt)("p",null,"First of all, Geth and its DB needs to be removed. Stop Geth process, find a ",(0,r.kt)("inlineCode",{parentName:"p"},".ethereum")," directory and remove it\ncompletely. Also there is a command which can be used to remove Geth db:"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"sudo geth --datadir /var/lib/goethereum removedb")),(0,r.kt)("p",null,"Ensure that Geth is stopped properly - it is crucial since it acquires ports which are common between other clients so\nit may cause some unexpected problems during procedure of syncing Nethermind."),(0,r.kt)("h4",{id:"step-2---download-nethermind-latest-release"},"Step 2 - Download Nethermind latest release"),(0,r.kt)("p",null,"Please refer to\na ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind-post-merge#step-1-installing-nethermind"},"#step-1-installing-nethermind")," to see\navailable options or use ",(0,r.kt)("a",{parentName:"p",href:"https://docs.sedge.nethermind.io/"},(0,r.kt)("strong",{parentName:"a"},"Sedge")," ")," which is a one-click setup tool for running\nnode\ndeveloped by Nethermind Team."),(0,r.kt)("h4",{id:"step-3---reconfigure-cl-and-run-nethermind"},"Step 3 - Reconfigure CL and run Nethermind"),(0,r.kt)("p",null,"Important thing in PoS chains like Ethereum Mainnet is to properly setup a connection between EL and CL. JwtSecret which\nis used for that communication is needed to be set properly. For that purpose, you can either use flags in CL to point\nto Nethermind jwtsecret or point Nethermind to that jwtsecret using command:\\\n",(0,r.kt)("inlineCode",{parentName:"p"},'--JsonRpc.JwtSecretFile "path/to/jwtsecret.hex"')),(0,r.kt)("p",null,"Nethermind will generate jwtsecret in ",(0,r.kt)("inlineCode",{parentName:"p"},"keystore")," directory and if not specified, it will use this secret."),(0,r.kt)("p",null,"After reconfiguring CL, run Nethermind an monitor it. Please refer to\na ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind-post-merge#step-5-run-nethermind"},"#step-4-run-nethermind"),"for instruction on how to\nrun Nethermind."),(0,r.kt)("p",null,"Now Nethermind node should be syncing well using CL reconfigured on machine. To monitor status of syncing there is a\nJsonRPC call which can be used ",(0,r.kt)("a",{parentName:"p",href:"/docs/interacting-with-nethermind/json-rpc-api/eth#eth_syncing"},"#eth","_","syncing"),'.\nWhenever this endpoint will return "false", node is considered as fully synced with all bodies and receipts needed to\nwork properly as a Validator.'),(0,r.kt)("p",null,"Another option is to use a health module which will also return a information about current state of syncing."),(0,r.kt)("h4",{id:"step-4---ensure-your-setup-works-well-after-changes"},"Step 4 - Ensure Your setup works well after changes"),(0,r.kt)("p",null,"To see if nodes are progressing properly check logs of both Nethermind and CL to check if there are no warnings/errors -\nespecially ones about authentication which may tell about invalid jwtsecret used or no jwt configured."),(0,r.kt)("p",null,"Also check if Your Nethermind node is following chain properly. From logs you can extract messages like:\n",(0,r.kt)("inlineCode",{parentName:"p"},"Block <<HASH>> was set as head.")),(0,r.kt)("p",null,"Compare a hash from log to hash of corresponding block on ",(0,r.kt)("a",{parentName:"p",href:"https://etherscan.io/"},"https://etherscan.io/")," to see if node\nis progressing well."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"EXAMPLE"),"\nLogs from Nethermind:\n",(0,r.kt)("inlineCode",{parentName:"p"},"Block 0x13cebe2db23cc09fb386fa4a470d6dac3dfca65e11968472f5a1f3681191beab was set as head. 20 Feb 2023 14:56:36.987"),"\n",(0,r.kt)("inlineCode",{parentName:"p"},"FCU - block 16670194 (0x13cebe...91beab) was processed.")),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"Block on etherscan:"),"\n",(0,r.kt)("a",{parentName:"p",href:"https://etherscan.io/block/16670194"},(0,r.kt)("inlineCode",{parentName:"a"},"https://etherscan.io/block/16670194"))),(0,r.kt)("p",{parentName:"admonition"},"Block number and block hash matches information from logs.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/77250fd7.12216159.js b/assets/js/77250fd7.12216159.js new file mode 100644 index 000000000..53e46ac59 --- /dev/null +++ b/assets/js/77250fd7.12216159.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8534],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>s});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function d(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),p=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):d(d({},e),t)),a},c=function(t){var e=p(t.components);return n.createElement(o.Provider,{value:e},t.children)},m="mdxType",f={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},b=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,o=t.parentName,c=i(t,["components","mdxType","originalType","parentName"]),m=p(a),b=r,s=m["".concat(o,".").concat(b)]||m[b]||f[b]||l;return a?n.createElement(s,d(d({ref:e},c),{},{components:a})):n.createElement(s,d({ref:e},c))}));function s(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,d=new Array(l);d[0]=b;var i={};for(var o in e)hasOwnProperty.call(e,o)&&(i[o]=e[o]);i.originalType=t,i[m]="string"==typeof t?t:r,d[1]=i;for(var p=2;p<l;p++)d[p]=a[p];return n.createElement.apply(null,d)}return n.createElement.apply(null,a)}b.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>d});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function d(t){let{children:e,hidden:a,className:d}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,d),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>v});var n=a(7462),r=a(7294),l=a(6010),d=a(2466),i=a(6550),o=a(1980),p=a(7392),c=a(12);function m(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function f(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??m(a);return function(t){const e=(0,p.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function b(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function s(t){let{queryString:e=!1,groupId:a}=t;const n=(0,i.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,o._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function k(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=f(t),[d,i]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!b({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[o,p]=s({queryString:a,groupId:n}),[m,k]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,c.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),u=(()=>{const t=o??m;return b({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{u&&i(u)}),[u]);return{selectedValue:d,selectValue:(0,r.useCallback)((t=>{if(!b({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);i(t),p(t),k(t)}),[p,k,l]),tabValues:l}}var u=a(2389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(t){let{className:e,block:a,selectedValue:i,selectValue:o,tabValues:p}=t;const c=[],{blockElementScrollPositionUntilNextRender:m}=(0,d.o5)(),f=t=>{const e=t.currentTarget,a=c.indexOf(e),n=p[a].value;n!==i&&(m(e),o(n))},b=t=>{let e=null;switch(t.key){case"Enter":f(t);break;case"ArrowRight":{const a=c.indexOf(t.currentTarget)+1;e=c[a]??c[0];break}case"ArrowLeft":{const a=c.indexOf(t.currentTarget)-1;e=c[a]??c[c.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},p.map((t=>{let{value:e,label:a,attributes:d}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===e?0:-1,"aria-selected":i===e,key:e,ref:t=>c.push(t),onKeyDown:b,onClick:f},d,{className:(0,l.Z)("tabs__item",N.tabItem,d?.className,{"tabs__item--active":i===e})}),a??e)})))}function y(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function h(t){const e=k(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",N.tabList)},r.createElement(g,(0,n.Z)({},t,e)),r.createElement(y,(0,n.Z)({},t,e)))}function v(t){const e=(0,u.Z)();return r.createElement(h,(0,n.Z)({key:String(e)},t))}},4436:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>s,frontMatter:()=>i,metadata:()=>p,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),d=a(5162);const i={},o="proof",p={unversionedId:"nethermind-utilities/cli/proof",id:"nethermind-utilities/cli/proof",title:"proof",description:"proof.getTransactionByHash",source:"@site/docs/06-nethermind-utilities/cli/proof.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/proof",permalink:"/docs/nethermind-utilities/cli/proof",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/proof.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"personal",permalink:"/docs/nethermind-utilities/cli/personal"},next:{title:"system",permalink:"/docs/nethermind-utilities/cli/system"}},c={},m=[{value:"proof.getTransactionByHash",id:"proofgettransactionbyhash",level:2},{value:"proof.getTransactionReceipt",id:"proofgettransactionreceipt",level:2}],f={toc:m},b="wrapper";function s(t){let{components:e,...a}=t;return(0,r.kt)(b,(0,n.Z)({},f,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"proof"},"proof"),(0,r.kt)("h2",{id:"proofgettransactionbyhash"},"proof.getTransactionByHash"),(0,r.kt)("p",null,"This function returns the same result as ",(0,r.kt)("inlineCode",{parentName:"p"},"eth_getTransactionReceipt")," and also a tx proof, receipt proof and serialized\nblock headers."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"proof.getTransactionByHash(txHash, includeHeader)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"includeHeader"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionWithProof object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"proof.getTransactionByHash(txHash, includeHeader)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'"transaction": { "hash": "0xb62594c08de66c683fbffe44792a1ccc0f9b80e43071048ed03c18a71fd3c19a","nonce": "0x630","blockHash": "0x42d72739c2b2659916d7b42a49661fdec317e780af1395c2c15aa89b4c42e220","blockNumber": "0x88f194","transactionIndex": "0x24","from": "0x78ca86e8133ef9368b4537879cf2f38fddbb636b","to": "0x1dfd95eb75a7486945d366a0bc0b937f0aaa526f","value": "0x0","gasPrice": "0x3b9aca00","gas": "0xc9e2","data": "0xa9059cbb000000000000000000000000e3ac1cc1453e70f80ff58f3bb56b0532238ae24a00000000000000000000000000000000000000000000003635c9adc5dea00000","input": "0xa9059cbb000000000000000000000000e3ac1cc1453e70f80ff58f3bb56b0532238ae24a00000000000000000000000000000000000000000000003635c9adc5dea00000","type": "0x0","v": "0x2b","s": "0x33a9425e84bf310d372a9f531b237baebccfdd2b426e817cc9553355a9165342","r": "0xe14a066de4787a4c0192f5a2285fd835a85baa3a4f63b1e8a2d8d7f6e04425ca" },"txProof": [ "0xf891a0311d3b27b7612bf40c2c5d623c62c2afe30a47f486700074e4c4d7cf603c90c8a0cd64d350a95e9286a580a75ae11fe58801992f9ac65ace8a0b853d16f87b09b0a0ae9d609ff06d19bb911d7ad05cfdd6c80a9f1fddccbdb76a78594536122345ce8080808080a09773b23452983c0ed65aebb64522af322967c62be34414e16b32b7e4bdaecdb68080808080808080","0xf8b1a0715f91aae7675a1c8469685d18bc94241d275c82a3b52df6c4fab064fcba3017a0e77ac7615c08eaafccc876956f3dad1892f08c1f1128e2cdf9064664381a540fa06f2d934e5f7995657144ad66b8b5cdce6b6c141422f95d44eb91ca6765d4f819a0b265c005bad056db029945b3d68a631b624a77703733fa9b2042c0f211f8ef4ea0bb97f719cc5f6082fe5bab8588dc564a843a6b40c5494982ded868f19eef07b6808080808080808080808080","0xf8af20b8acf8aa820630843b9aca0082c9e2941dfd95eb75a7486945d366a0bc0b937f0aaa526f80b844a9059cbb000000000000000000000000e3ac1cc1453e70f80ff58f3bb56b0532238ae24a00000000000000000000000000000000000000000000003635c9adc5dea000002ba0e14a066de4787a4c0192f5a2285fd835a85baa3a4f63b1e8a2d8d7f6e04425caa033a9425e84bf310d372a9f531b237baebccfdd2b426e817cc9553355a9165342" ]\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionWithProof")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transaction"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TxProof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHeader"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/proof#proof_gettransactionbyhash"},"See also JSON RPC proof_getTransactionByHash")),(0,r.kt)("h2",{id:"proofgettransactionreceipt"},"proof.getTransactionReceipt"),(0,r.kt)("p",null,"This function should return the same result as ",(0,r.kt)("inlineCode",{parentName:"p"},"eth_call")," and also proofs of all used accounts and their storages and\nserialized block headers."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"proof.getTransactionReceipt(txHash, includeHeader)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"includeHeader"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptWithProof object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"proof.getTransactionReceipt(txHash, includeHeader)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "receipt": { "transactionHash": "0xfff473e0d10e9dcc18bb4585fb2ba17f682949996f5dfda41c20c425a53b4e71","transactionIndex": "0x0","blockHash": "0x539822db4041dac07f02819b1337f5f9d7291a996f80d9c05ada334c7a97264c","blockNumber": "0x1","cumulativeGasUsed": "0x0","gasUsed": "0x0","to": null,"contractAddress": null,"logs": [ ],"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status": "0x0","type": "0x0" },"txProof": [ "0xf851a073ff16e6f3a3ca20ba99ad5bacc973e800ba7ec7092266fcd2520703613e3d9580808080808080a0a70de17dcf5a91c1b986463b4e8419665333b2a66e66f7127baae3d4d58d052d8080808080808080","0xf86530b862f86080018252089400000000000000000000000000000000000000000181801ca0b4e030f395ed357d206b58d9a0ded408589a9e26f1a5b41010772cd0d84b8d16a04d9797a972bc308ea635f22455881c41c7c9fb946c93db6f99d2bd529675af13" ],"receiptProof": [ "0xf851a08e4cd3def722e9727e505d3798454165d832e1aabd5c56e5d0e4e9f0796a783280808080808080a05380738598f169c9e407a0f61558e53ea59a4c5e643aabc57679c7c0a3b761428080808080808080","0xf9012f30b9012bf90128a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421825208b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0" ],"blockHeader": "0xf901f9a0b3157bcccab04639f6393042690a6c9862deebe88c781f911e8dfd265531e9ffa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0541c8844bd420f79a5f7f8db723e2106160d350043de7cf76d78ea13ed0ff6c9a0e1b1585a222beceb3887dc6701802facccf186c2d0f6aa69e26ae0c431fc2b5db9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424001833d090080830f424183010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8" }\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptWithProof")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Receipt"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptForRpc object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TxProof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptProof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHeader"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CumulativeGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EffectiveGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ContractAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Logs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"LogEntryForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Root"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Status"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/proof#proof_gettransactionreceipt"},"See also JSON RPC proof_getTransactionReceipt")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/79cbde4c.b1f8fdad.js b/assets/js/79cbde4c.b1f8fdad.js new file mode 100644 index 000000000..651c10dca --- /dev/null +++ b/assets/js/79cbde4c.b1f8fdad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6654],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",s={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,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),m=p(r),f=o,d=m["".concat(l,".").concat(f)]||m[f]||s[f]||i;return r?n.createElement(d,a(a({ref:t},u),{},{components:r})):n.createElement(d,a({ref:t},u))}));function d(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 c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:o,a[1]=c;for(var p=2;p<i;p++)a[p]=r[p];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},6397:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>s,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const i={},a="Runner module",c={unversionedId:"monitoring/metrics-explanation/runner",id:"monitoring/metrics-explanation/runner",title:"Runner module",description:"| Metric Name | Description |",source:"@site/docs/04-monitoring/metrics-explanation/runner.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/runner",permalink:"/docs/monitoring/metrics-explanation/runner",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/runner.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Network",permalink:"/docs/monitoring/metrics-explanation/network"},next:{title:"Setting up local Metrics infrastructure",permalink:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture"}},l={},p=[],u={toc:p},m="wrapper";function s(e){let{components:t,...r}=e;return(0,o.kt)(m,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"runner-module"},"Runner module"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:"left"},"Metric Name"),(0,o.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"left"},"Version"),(0,o.kt)("td",{parentName:"tr",align:"left"},"Version number")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7a68c7d8.131a1fd0.js b/assets/js/7a68c7d8.131a1fd0.js new file mode 100644 index 000000000..26e8188d8 --- /dev/null +++ b/assets/js/7a68c7d8.131a1fd0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1049],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=s(n),f=a,m=u["".concat(c,".").concat(f)]||u[f]||d[f]||i;return n?r.createElement(m,l(l({ref:t},p),{},{components:n})):r.createElement(m,l({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=f;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[u]="string"==typeof e?e:a,l[1]=o;for(var s=2;s<i;s++)l[s]=n[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},6883:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));const i={},l="Mining",o={unversionedId:"fundamentals/configuration/mining",id:"fundamentals/configuration/mining",title:"Mining",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/mining.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/mining",permalink:"/docs/fundamentals/configuration/mining",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/mining.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Mev",permalink:"/docs/fundamentals/configuration/mev"},next:{title:"Network",permalink:"/docs/fundamentals/configuration/network"}},c={},s=[],p={toc:s},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"mining"},"Mining"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MININGCONFIG_ENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines whether the blocks should be produced."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MININGCONFIG_EXTRADATA"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Deprecated since v1.14.6. Please use Blocks.ExtraDataValues you set here are forwarded to it. Conflicting values will cause Exceptions. Block header extra data. 32-bytes shall be extra data max length."),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nethermind")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"MinGasPrice"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MININGCONFIG_MINGASPRICE"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Deprecated since v1.14.6. Please use Blocks.MinGasPrice Values you set here are forwarded to it. Conflicting values will cause Exceptions. Minimum gas premium for transactions accepted by the block producer. Before EIP1559: Minimum gas price for transactions accepted by the block producer."),(0,a.kt)("td",{parentName:"tr",align:"left"},"1")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"RandomizedBlocks"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MININGCONFIG_RANDOMIZEDBLOCKS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Deprecated since v1.14.6. Please use Blocks.RandomizedBlocks Values you set here are forwarded to it. Conflicting values will cause Exceptions. Only used in NethDev. Setting this to true will change the difficulty of the block randomly within the constraints."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TargetBlockGasLimit"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_MININGCONFIG_TARGETBLOCKGASLIMIT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Deprecated since v1.14.6. Please use Blocks.TargetBlockGasLimit. Values you set here are forwarded to it. Conflicting values will cause Exceptions. Block gas limit that the block producer should try to reach in the fastest possible way based on protocol rules. NULL value means that the miner should follow other miners."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7d5e0029.92e94f6c.js b/assets/js/7d5e0029.92e94f6c.js new file mode 100644 index 000000000..516574126 --- /dev/null +++ b/assets/js/7d5e0029.92e94f6c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3988],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>N});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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var m=n.createContext({}),p=function(e){var t=n.useContext(m),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(m.Provider,{value:t},e.children)},d="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,m=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(r),s=a,N=d["".concat(m,".").concat(s)]||d[s]||f[s]||o;return r?n.createElement(N,i(i({ref:t},c),{},{components:r})):n.createElement(N,i({ref:t},c))}));function N(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=s;var l={};for(var m in t)hasOwnProperty.call(t,m)&&(l[m]=t[m]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}s.displayName="MDXCreateElement"},9496:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>m,contentTitle:()=>i,default:()=>f,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const o={},i="Evm",l={unversionedId:"monitoring/metrics-explanation/evm",id:"monitoring/metrics-explanation/evm",title:"Evm",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/evm.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/evm",permalink:"/docs/monitoring/metrics-explanation/evm",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/evm.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Using dotnet-counters",permalink:"/docs/monitoring/metrics-explanation/dotnet-counters"},next:{title:"Init",permalink:"/docs/monitoring/metrics-explanation/init"}},m={},p=[],c={toc:p},d="wrapper";function f(e){let{components:t,...r}=e;return(0,a.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"evm"},"Evm"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_blockhash_opcode"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of BLOCKHASH opcodes executed.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_bn254_add_precompile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of BN254_ADD precompile calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_bn254_mul_precompile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of BN254_MUL precompile calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_bn254_pairing_precompile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of BN254_PAIRING precompile calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_calls"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of calls to other contracts.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_creates"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of contract create calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_ec_recover_precompile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of EC_RECOVERY precompile calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_empty_calls"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of calls made to addresses without code.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_evm_exceptions"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of EVM exceptions thrown by contracts.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_m_copy_opcode"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of MCOPY opcodes executed.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_mod_exp_opcode"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of MODEXP precompiles executed.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_mod_exp_precompile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of MODEXP precompile calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_point_evaluation_precompile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of Point Evaluation precompile calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_ripemd160_precompile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of RIPEMD160 precompile calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_self_destructs"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SELFDESTRUCT calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_sha256_precompile"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SHA256 precompile calls.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_sload_opcode"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SLOAD opcodes executed.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_sstore_opcode"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of SSTORE opcodes executed.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_tload_opcode"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of TLOAD opcodes executed.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_tstore_opcode"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of TSTORE opcodes executed.")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/814f3328.f1eafc3d.js b/assets/js/814f3328.f1eafc3d.js new file mode 100644 index 000000000..5326d81c0 --- /dev/null +++ b/assets/js/814f3328.f1eafc3d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2535],{5641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Welcome","permalink":"/blog/welcome"},{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},{"title":"Long Blog Post","permalink":"/blog/long-blog-post"},{"title":"First Blog Post","permalink":"/blog/first-blog-post"}]}')}}]); \ No newline at end of file diff --git a/assets/js/825018a4.08f5e7e6.js b/assets/js/825018a4.08f5e7e6.js new file mode 100644 index 000000000..47ceb4a28 --- /dev/null +++ b/assets/js/825018a4.08f5e7e6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4971],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",f={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,a=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,g=u["".concat(s,".").concat(m)]||u[m]||f[m]||i;return n?r.createElement(g,l(l({ref:t},d),{},{components:n})):r.createElement(g,l({ref:t},d))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:a,l[1]=o;for(var p=2;p<i;p++)l[p]=n[p];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},9629:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>f,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const i={},l="Pruning",o={unversionedId:"fundamentals/configuration/pruning",id:"fundamentals/configuration/pruning",title:"Pruning",description:"Configuration of the pruning parameters (pruning is the process of removing some of the intermediary state nodes - it",source:"@site/docs/02-fundamentals/04-configuration/pruning.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/pruning",permalink:"/docs/fundamentals/configuration/pruning",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/pruning.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Plugin",permalink:"/docs/fundamentals/configuration/plugin"},next:{title:"Receipt",permalink:"/docs/fundamentals/configuration/receipt"}},s={},p=[],d={toc:p},u="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"pruning"},"Pruning"),(0,a.kt)("p",null,"Configuration of the pruning parameters (pruning is the process of removing some of the intermediary state nodes - it\nsaves some disk space but makes most of the historical state queries fail)."),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"AvailableSpaceCheckEnabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Enables available disk space check."),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"CacheMb"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_CACHEMB"),(0,a.kt)("td",{parentName:"tr",align:"left"},"'Memory' pruning: Pruning cache size in MB (amount if historical nodes data to store in cache - the bigger the cache the bigger the disk space savings)."),(0,a.kt)("td",{parentName:"tr",align:"left"},"1024")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"FullPruningCompletionBehavior"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Determines what to do after Nethermind completes a full prune. 'None': does not take any special action. 'ShutdownOnSuccess': shuts Nethermind down if the full prune succeeded. 'AlwaysShutdown': shuts Nethermind down once the prune completes, whether it succeeded or failed."),(0,a.kt)("td",{parentName:"tr",align:"left"},"None")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"FullPruningDisableLowPriorityWrites"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Full pruning uses low priority writes to prevent blocking block processing. If not needed, set this to true for faster full pruning."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"FullPruningMaxDegreeOfParallelism"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM"),(0,a.kt)("td",{parentName:"tr",align:"left"},"'Full' pruning: Defines how many parallel tasks and potentially used threads can be created by full pruning. -1 - number of logical processors, 0 - 25% of logical processors, 1 - full pruning will run on single thread. Recommended value depends on the type of the node. If the node needs to be responsive (its RPC or Validator node) then recommended value is the default value or below is recommended. If the node doesn't have much other responsibilities but needs to be reliably be able to follow the chain without any delays and produce live logs - the default value or above is recommended. If the node doesn't have to be responsive, has very fast I/O (like NVME) and the shortest pruning time is to be achieved, this can be set to the number of logical processors (-1)."),(0,a.kt)("td",{parentName:"tr",align:"left"},"0")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"FullPruningMemoryBudgetMb"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Set the memory budget used for the trie visit. Increasing this significantly reduces read iops requirement at expense of RAM. Default depend on network. Set to 0 to disable."),(0,a.kt)("td",{parentName:"tr",align:"left"},"4000")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"FullPruningMinimumDelayHours"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"In order to not exhaust disk writes, there is a minimum delay between allowed full pruning operations."),(0,a.kt)("td",{parentName:"tr",align:"left"},"240")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"FullPruningThresholdMb"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB"),(0,a.kt)("td",{parentName:"tr",align:"left"},"'Full' pruning: Defines threshold in MB to trigger full pruning, depends on 'Mode' and 'FullPruningTrigger'."),(0,a.kt)("td",{parentName:"tr",align:"left"},"256000")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"FullPruningTrigger"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER"),(0,a.kt)("td",{parentName:"tr",align:"left"},"'Full' pruning: Defines trigger for full pruning, manuel trigger is always supported via admin_prune RPC call. Either size of StateDB or free space left on Volume where StateDB is located can be configured as auto triggers. Possible values: 'Manual', 'StateDbSize', 'VolumeFreeSpace'."),(0,a.kt)("td",{parentName:"tr",align:"left"},"Manual")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Mode"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_MODE"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Sets pruning mode. Possible values: 'None', 'Memory', 'Full', 'Hybrid'."),(0,a.kt)("td",{parentName:"tr",align:"left"},"Hybrid")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"PersistenceInterval"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL"),(0,a.kt)("td",{parentName:"tr",align:"left"},"'Memory' pruning: Defines how often blocks will be persisted even if not required by cache memory usage (the bigger the value the bigger the disk space savings)"),(0,a.kt)("td",{parentName:"tr",align:"left"},"8192")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/839299d0.bb177adc.js b/assets/js/839299d0.bb177adc.js new file mode 100644 index 000000000..9ba9cfd67 --- /dev/null +++ b/assets/js/839299d0.bb177adc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[166],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=s(n),f=o,d=m["".concat(l,".").concat(f)]||m[f]||u[f]||i;return n?r.createElement(d,a(a({ref:t},p),{},{components:n})):r.createElement(d,a({ref:t},p))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=f;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[m]="string"==typeof e?e:o,a[1]=c;for(var s=2;s<i;s++)a[s]=n[s];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},569:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));const i={description:"Monitoring and collecting metrics-explanation from"},a="Metrics",c={unversionedId:"monitoring/metrics-explanation/README",id:"monitoring/metrics-explanation/README",title:"Metrics",description:"Monitoring and collecting metrics-explanation from",source:"@site/docs/04-monitoring/metrics-explanation/README.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/",permalink:"/docs/monitoring/metrics-explanation/",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/README.md",tags:[],version:"current",frontMatter:{description:"Monitoring and collecting metrics-explanation from"},sidebar:"tutorialSidebar",previous:{title:"Monitoring",permalink:"/docs/category/monitoring"},next:{title:"AccountAbstraction",permalink:"/docs/monitoring/metrics-explanation/accountabstraction"}},l={},s=[],p={toc:s},m="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"metrics"},"Metrics"),(0,o.kt)("p",null,"A Nethermind node provides a few ways of gathering information, monitoring and collecting metrics about itself. The\nfollowing options are available at the moment:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"/docs/monitoring/metrics-explanation/dotnet-counters"},"dotnet-counters.md")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture"},"setting-up-local-metrics-infrastracture.md"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/845744b6.33414a75.js b/assets/js/845744b6.33414a75.js new file mode 100644 index 000000000..1a14d837f --- /dev/null +++ b/assets/js/845744b6.33414a75.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[757],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>h});var r=n(7294);function a(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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),d=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},l=function(e){var t=d(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),p=d(n),u=a,h=p["".concat(c,".").concat(u)]||p[u]||m[u]||o;return n?r.createElement(h,i(i({ref:t},l),{},{components:n})):r.createElement(h,i({ref:t},l))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var d=2;d<o;d++)i[d]=n[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},4172:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var r=n(7462),a=(n(7294),n(3905));const o={description:"How to resync your Nethermind node"},i="Resync database from scratch",s={unversionedId:"fundamentals/how-to-reduce-database-size/resync-database-from-scratch",id:"fundamentals/how-to-reduce-database-size/resync-database-from-scratch",title:"Resync database from scratch",description:"How to resync your Nethermind node",source:"@site/docs/02-fundamentals/08-how-to-reduce-database-size/resync-database-from-scratch.md",sourceDirName:"02-fundamentals/08-how-to-reduce-database-size",slug:"/fundamentals/how-to-reduce-database-size/resync-database-from-scratch",permalink:"/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/08-how-to-reduce-database-size/resync-database-from-scratch.md",tags:[],version:"current",frontMatter:{description:"How to resync your Nethermind node"},sidebar:"tutorialSidebar",previous:{title:"Full Pruning",permalink:"/docs/fundamentals/how-to-reduce-database-size/full-pruning"},next:{title:"Private Networks",permalink:"/docs/fundamentals/private-networks/"}},c={},d=[{value:"Resyncing a Nethermind Node",id:"resyncing-a-nethermind-node",level:2},{value:"Steps to Resync a Nethermind Node",id:"steps-to-resync-a-nethermind-node",level:3}],l={toc:d},p="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"resync-database-from-scratch"},"Resync database from scratch"),(0,a.kt)("h2",{id:"resyncing-a-nethermind-node"},"Resyncing a Nethermind Node"),(0,a.kt)("p",null,"This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one."),(0,a.kt)("h3",{id:"steps-to-resync-a-nethermind-node"},"Steps to Resync a Nethermind Node"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Stop the Nethermind node"),": If your Nethermind node is currently running, stop it to ensure that no new data is\nbeing written to the database during the resync process."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Delete the existing database"),": Navigate to the Nethermind data directory. The location of this directory depends\non how Nethermind was installed and your configuration settings. Inside the data directory, find the ",(0,a.kt)("inlineCode",{parentName:"li"},"nethermind_db"),"\nfolder and delete the ",(0,a.kt)("inlineCode",{parentName:"li"},"mainnet")," subfolder to remove the existing database for the mainnet."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Update the configuration file (optional)"),": If you want to change any configuration settings before resyncing the\nnode, edit the ",(0,a.kt)("inlineCode",{parentName:"li"},"mainnet.cfg")," file located in the Nethermind directory. For example, you might want to adjust the\npruning settings or specify a different network."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Update the Pivot block (optional)"),"\\",(0,a.kt)("admonition",{parentName:"li",type:"danger"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("strong",{parentName:"p"},"Only for versions before 1.19.0 where Auto-Pivot approach was introduced"))),(0,a.kt)("ol",{parentName:"li"},(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Using Etherscan"),": If you want to speed up the syncing process, you can update the Pivot block to a more recent\none. To do this, find the ",(0,a.kt)("inlineCode",{parentName:"p"},"Sync")," section in the ",(0,a.kt)("inlineCode",{parentName:"p"},"mainnet.cfg")," file and update the ",(0,a.kt)("inlineCode",{parentName:"p"},"PivotNumber")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"PivotHash"),'\nfields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from\na block explorer such as ',(0,a.kt)("a",{parentName:"p",href:"https://etherscan.io/"},"Etherscan"),".\\\n\\\nUsing block number 17165278 from ",(0,a.kt)("a",{parentName:"p",href:"https://etherscan.io/block/17165278"},"Etherscan"),":"),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre"},' { \n "PivotNumber": 17165278,\n "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"\n }\n'))),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Using Nethermind's GitHub"),": Alternatively, you can update the Pivot block by referring to\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.cfg"},"Nethermind's mainnet.cfg file on GitHub"),".\nThe Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the ",(0,a.kt)("inlineCode",{parentName:"p"},"PivotNumber"),"\nand ",(0,a.kt)("inlineCode",{parentName:"p"},"PivotHash")," values from the GitHub file and update your local ",(0,a.kt)("inlineCode",{parentName:"p"},"mainnet.cfg")," file accordingly.")))),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Restart the Nethermind node"),": Start the Nethermind node again to initiate the resync process. The node will begin\nsyncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks\nin the blockchain.")),(0,a.kt)("p",null,"To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will\ndisplay information about the block processing, synchronization status and ",(0,a.kt)("inlineCode",{parentName:"p"},"OldHeaders")," being processed. By observing\nthe increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active\nand working as expected."),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps"),(0,a.kt)("p",{parentName:"blockquote"},"Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps"),(0,a.kt)("p",{parentName:"blockquote"},"Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total\n40622848.83bps"),(0,a.kt)("p",{parentName:"blockquote"},"Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps"),(0,a.kt)("p",{parentName:"blockquote"},"Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total\n3882943.63bps\\\nDownloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps"),(0,a.kt)("p",{parentName:"blockquote"},"Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps")),(0,a.kt)("p",null,"Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware,\ninternet connection, and the size of the blockchain."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/84d60698.9699dfc3.js b/assets/js/84d60698.9699dfc3.js new file mode 100644 index 000000000..fbd5baa24 --- /dev/null +++ b/assets/js/84d60698.9699dfc3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7948],{4082:s=>{s.exports=JSON.parse('{"title":"Contact Us","slug":"/category/contact-us","permalink":"/docs/category/contact-us","navigation":{"previous":{"title":"Known Issues","permalink":"/docs/resources/know-issues"},"next":{"title":"Contact Us","permalink":"/docs/contact/"}}}')}}]); \ No newline at end of file diff --git a/assets/js/84eaa0d0.05e0f945.js b/assets/js/84eaa0d0.05e0f945.js new file mode 100644 index 000000000..dd307821a --- /dev/null +++ b/assets/js/84eaa0d0.05e0f945.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5497],{10:e=>{e.exports=JSON.parse('{"title":"Interacting With Nethermind","slug":"/category/interacting-with-nethermind","permalink":"/docs/category/interacting-with-nethermind","navigation":{"previous":{"title":"Running Nethermind & CL","permalink":"/docs/fundamentals/running-nethermind-post-merge"},"next":{"title":"JSON RPC","permalink":"/docs/interacting-with-nethermind/json-rpc-api/"}}}')}}]); \ No newline at end of file diff --git a/assets/js/8717b14a.b19301c3.js b/assets/js/8717b14a.b19301c3.js new file mode 100644 index 000000000..7d4e947fa --- /dev/null +++ b/assets/js/8717b14a.b19301c3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[948],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});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 l(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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(r),m=o,f=u["".concat(s,".").concat(m)]||u[m]||g[m]||l;return r?n.createElement(f,a(a({ref:t},c),{},{components:r})):n.createElement(f,a({ref:t},c))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=r.length,a=new Array(l);a[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:o,a[1]=i;for(var p=2;p<l;p++)a[p]=r[p];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},3352:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>g,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var n=r(7462),o=(r(7294),r(3905));const l={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},a=void 0,i={permalink:"/blog/long-blog-post",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",formattedDate:"May 29, 2019",tags:[{label:"hello",permalink:"/blog/tags/hello"},{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},prevItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/blog/first-blog-post"}},s={authorsImageUrls:[void 0]},p=[],c={toc:p},u="wrapper";function g(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This is the summary of a very long blog post,"),(0,o.kt)("p",null,"Use a ",(0,o.kt)("inlineCode",{parentName:"p"},"\x3c!--")," ",(0,o.kt)("inlineCode",{parentName:"p"},"truncate")," ",(0,o.kt)("inlineCode",{parentName:"p"},"--\x3e")," comment to limit blog post size in the list view."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8995a362.5c441479.js b/assets/js/8995a362.5c441479.js new file mode 100644 index 000000000..419c5da81 --- /dev/null +++ b/assets/js/8995a362.5c441479.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9205],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),m=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=m(e.components);return r.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),s=m(n),u=a,f=s["".concat(l,".").concat(u)]||s[u]||d[u]||i;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p[s]="string"==typeof e?e:a,o[1]=p;for(var m=2;m<i;m++)o[m]=n[m];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},649:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>m});var r=n(7462),a=(n(7294),n(3905));const i={},o="evm",p={unversionedId:"interacting-with-nethermind/json-rpc-api/evm",id:"interacting-with-nethermind/json-rpc-api/evm",title:"evm",description:"evm_mine",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/evm.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/evm",permalink:"/docs/interacting-with-nethermind/json-rpc-api/evm",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/evm.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/docs/interacting-with-nethermind/json-rpc-api/eth"},next:{title:"net",permalink:"/docs/interacting-with-nethermind/json-rpc-api/net"}},l={},m=[{value:"evm_mine",id:"evm_mine",level:2}],c={toc:m},s="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"evm"},"evm"),(0,a.kt)("h2",{id:"evm_mine"},"evm_mine"),(0,a.kt)("p",null,"Triggers block production. "),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},'{"method":"evm_mine","params":[]}'))))),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,a.kt)("td",{parentName:"tr",align:"left"})))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of evm_mine"',title:'"Example',request:!0,of:!0,'evm_mine"':!0},'curl --data \'{"method":"evm_mine","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8d8fd354.7eaef1fa.js b/assets/js/8d8fd354.7eaef1fa.js new file mode 100644 index 000000000..618834a4e --- /dev/null +++ b/assets/js/8d8fd354.7eaef1fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5519],{3905:(t,e,a)=>{a.d(e,{Zo:()=>k,kt:()=>f});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function d(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function p(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var i=n.createContext({}),m=function(t){var e=n.useContext(i),a=e;return t&&(a="function"==typeof t?t(e):d(d({},e),t)),a},k=function(t){var e=m(t.components);return n.createElement(i.Provider,{value:e},t.children)},o="mdxType",N={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},b=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,i=t.parentName,k=p(t,["components","mdxType","originalType","parentName"]),o=m(a),b=r,f=o["".concat(i,".").concat(b)]||o[b]||N[b]||l;return a?n.createElement(f,d(d({ref:e},k),{},{components:a})):n.createElement(f,d({ref:e},k))}));function f(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,d=new Array(l);d[0]=b;var p={};for(var i in e)hasOwnProperty.call(e,i)&&(p[i]=e[i]);p.originalType=t,p[o]="string"==typeof t?t:r,d[1]=p;for(var m=2;m<l;m++)d[m]=a[m];return n.createElement.apply(null,d)}return n.createElement.apply(null,a)}b.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>d});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function d(t){let{children:e,hidden:a,className:d}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,d),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>C});var n=a(7462),r=a(7294),l=a(6010),d=a(2466),p=a(6550),i=a(1980),m=a(7392),k=a(12);function o(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function N(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??o(a);return function(t){const e=(0,m.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function b(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function f(t){let{queryString:e=!1,groupId:a}=t;const n=(0,p.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,i._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function c(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=N(t),[d,p]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!b({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[i,m]=f({queryString:a,groupId:n}),[o,c]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,k.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),s=(()=>{const t=i??o;return b({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{s&&p(s)}),[s]);return{selectedValue:d,selectValue:(0,r.useCallback)((t=>{if(!b({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);p(t),m(t),c(t)}),[m,c,l]),tabValues:l}}var s=a(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(t){let{className:e,block:a,selectedValue:p,selectValue:i,tabValues:m}=t;const k=[],{blockElementScrollPositionUntilNextRender:o}=(0,d.o5)(),N=t=>{const e=t.currentTarget,a=k.indexOf(e),n=m[a].value;n!==p&&(o(e),i(n))},b=t=>{let e=null;switch(t.key){case"Enter":N(t);break;case"ArrowRight":{const a=k.indexOf(t.currentTarget)+1;e=k[a]??k[0];break}case"ArrowLeft":{const a=k.indexOf(t.currentTarget)-1;e=k[a]??k[k.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},m.map((t=>{let{value:e,label:a,attributes:d}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:p===e?0:-1,"aria-selected":p===e,key:e,ref:t=>k.push(t),onKeyDown:b,onClick:N},d,{className:(0,l.Z)("tabs__item",g.tabItem,d?.className,{"tabs__item--active":p===e})}),a??e)})))}function y(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function u(t){const e=c(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",g.tabList)},r.createElement(h,(0,n.Z)({},t,e)),r.createElement(y,(0,n.Z)({},t,e)))}function C(t){const e=(0,s.Z)();return r.createElement(u,(0,n.Z)({key:String(e)},t))}},8311:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>k,contentTitle:()=>i,default:()=>f,frontMatter:()=>p,metadata:()=>m,toc:()=>o});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),d=a(5162);const p={},i="eth",m={unversionedId:"interacting-with-nethermind/json-rpc-api/eth",id:"interacting-with-nethermind/json-rpc-api/eth",title:"eth",description:"eth_blockNumber",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/eth.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/eth",permalink:"/docs/interacting-with-nethermind/json-rpc-api/eth",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/eth.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Engine JsonRpc Config Example",permalink:"/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example"},next:{title:"evm",permalink:"/docs/interacting-with-nethermind/json-rpc-api/evm"}},k={},o=[{value:"eth_blockNumber",id:"eth_blocknumber",level:2},{value:"eth_call",id:"eth_call",level:2},{value:"eth_chainId",id:"eth_chainid",level:2},{value:"eth_createAccessList",id:"eth_createaccesslist",level:2},{value:"eth_estimateGas",id:"eth_estimategas",level:2},{value:"eth_feeHistory",id:"eth_feehistory",level:2},{value:"eth_getAccount",id:"eth_getaccount",level:2},{value:"eth_getBalance",id:"eth_getbalance",level:2},{value:"eth_getBlockByHash",id:"eth_getblockbyhash",level:2},{value:"eth_getBlockByNumber",id:"eth_getblockbynumber",level:2},{value:"eth_getBlockTransactionCountByHash",id:"eth_getblocktransactioncountbyhash",level:2},{value:"eth_getBlockTransactionCountByNumber",id:"eth_getblocktransactioncountbynumber",level:2},{value:"eth_getCode",id:"eth_getcode",level:2},{value:"eth_getFilterChanges",id:"eth_getfilterchanges",level:2},{value:"eth_getFilterLogs",id:"eth_getfilterlogs",level:2},{value:"eth_getLogs",id:"eth_getlogs",level:2},{value:"eth_getProof",id:"eth_getproof",level:2},{value:"eth_getStorageAt",id:"eth_getstorageat",level:2},{value:"eth_getTransactionByBlockHashAndIndex",id:"eth_gettransactionbyblockhashandindex",level:2},{value:"eth_getTransactionByBlockNumberAndIndex",id:"eth_gettransactionbyblocknumberandindex",level:2},{value:"eth_getTransactionByHash",id:"eth_gettransactionbyhash",level:2},{value:"eth_getTransactionCount",id:"eth_gettransactioncount",level:2},{value:"eth_getTransactionReceipt",id:"eth_gettransactionreceipt",level:2},{value:"eth_getUncleByBlockHashAndIndex",id:"eth_getunclebyblockhashandindex",level:2},{value:"eth_getUncleByBlockNumberAndIndex",id:"eth_getunclebyblocknumberandindex",level:2},{value:"eth_getUncleCountByBlockHash",id:"eth_getunclecountbyblockhash",level:2},{value:"eth_getUncleCountByBlockNumber",id:"eth_getunclecountbyblocknumber",level:2},{value:"eth_newBlockFilter",id:"eth_newblockfilter",level:2},{value:"eth_newFilter",id:"eth_newfilter",level:2},{value:"eth_newPendingTransactionFilter",id:"eth_newpendingtransactionfilter",level:2},{value:"eth_pendingTransactions",id:"eth_pendingtransactions",level:2},{value:"eth_protocolVersion",id:"eth_protocolversion",level:2},{value:"eth_sendRawTransaction",id:"eth_sendrawtransaction",level:2},{value:"eth_sendTransaction",id:"eth_sendtransaction",level:2},{value:"eth_syncing",id:"eth_syncing",level:2},{value:"eth_uninstallFilter",id:"eth_uninstallfilter",level:2}],N={toc:o},b="wrapper";function f(t){let{components:e,...a}=t;return(0,r.kt)(b,(0,n.Z)({},N,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"eth"},"eth"),(0,r.kt)("h2",{id:"eth_blocknumber"},"eth_blockNumber"),(0,r.kt)("p",null,"Returns current block number "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_blockNumber","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x885480,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-blocknumber"},"See also CLI eth.blockNumber")),(0,r.kt)("h2",{id:"eth_call"},"eth_call"),(0,r.kt)("p",null,"Executes a tx call (does not create a transaction) "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_call","params":[transactionCall, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionCall"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_call","params":[transactionCall, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"object",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-call"},"See also CLI eth.call")),(0,r.kt)("h2",{id:"eth_chainid"},"eth_chainId"),(0,r.kt)("p",null,"Returns ChainID "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_chainId","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_chainId","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x4,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-chainid"},"See also CLI eth.chainId")),(0,r.kt)("h2",{id:"eth_createaccesslist"},"eth_createAccessList"),(0,r.kt)("p",null,"Creates an ",(0,r.kt)("a",{parentName:"p",href:"https://eips.ethereum.org/EIPS/eip-2930"},"EIP2930")," type AccessList for the given transaction "),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"Hint:")," If your transaction has code executed, then you can generate transaction access list with eth_createAccessList. If you send it with your transaction then it will lower your gas cost on Ethereum")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_createAccessList","params":[transactionCall, blockParameter, optimize]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionCall"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Transaction's details")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"(optional)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"optimize"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"},"(optional)")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_createAccessList","params":[transactionCall, blockParameter, optimize],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"accessList":[{"address":"0xfffffffffffffffffffffffffffffffffffffffe","storageKeys":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002"]},{"address":"0x76e68a8696537e4141926f3e528733af9e237d69","storageKeys":[]}],"gasUsed":"0xf71b"},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-createaccesslist"},"See also CLI eth.createAccessList")),(0,r.kt)("h2",{id:"eth_estimategas"},"eth_estimateGas"),(0,r.kt)("p",null,"Executes a tx call and returns gas used (does not create a transaction) "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_estimateGas","params":[transactionCall, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionCall"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_estimateGas","params":[transactionCall, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-estimategas"},"See also CLI eth.estimateGas")),(0,r.kt)("h2",{id:"eth_feehistory"},"eth_feeHistory"),(0,r.kt)("p",null,"Returns block fee history. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_feeHistory","params":[blockCount, newestBlock, rewardPercentiles]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockCount"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"newestBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"rewardPercentiles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Double[] object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"FeeHistoryResults object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_feeHistory","params":[blockCount, newestBlock, rewardPercentiles],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"baseFeePerGas": ["0x116c1cbb03", "0x10c3714c06"], "gasUsedRatio": [0.3487305666666667, 0.3], "oldestBlock": "0xc7e5ff", "reward": [["0x3b9aca00","0x3b9aca00"], ["0x0","0x3bb24dfa"]]},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Double[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type")))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"FeeHistoryResults")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsedRatio"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Double[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"OldestBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Reward"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"UInt256[][] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UInt256[][]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Length"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LongLength"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Rank"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SyncRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsReadOnly"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsFixedSize"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsSynchronized"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-feehistory"},"See also CLI eth.feeHistory")),(0,r.kt)("h2",{id:"eth_getaccount"},"eth_getAccount"),(0,r.kt)("p",null,"Retrieves Accounts via Address and Blocknumber "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getAccount","params":[accountAddress, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"accountAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccountForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getAccount","params":[accountAddress, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccountForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CodeHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Balance"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getaccount"},"See also CLI eth.getAccount")),(0,r.kt)("h2",{id:"eth_getbalance"},"eth_getBalance"),(0,r.kt)("p",null,"Returns account balance "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getBalance","params":[address, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"eth_getBalance","params":[address, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x6c8ae945bfe6e,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getbalance"},"See also CLI eth.getBalance")),(0,r.kt)("h2",{id:"eth_getblockbyhash"},"eth_getBlockByHash"),(0,r.kt)("p",null,"Retrieves a block by hash "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getBlockByHash","params":[blockHash, returnFullTransactionObjects]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"returnFullTransactionObjects"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"eth_getBlockByHash","params":[blockHash, returnFullTransactionObjects],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"author":"0x0000000000000000000000000000000000000000","difficulty":"0x1","extraData":"0x000000000000436f6e73656e5379732048797065726c656467657220426573754d3f7b71165a8266fcc569c96b6fcf9971ee4a8df59eeec4dcced0df8d778733429988e21d0124918859f988be9debf4b25fb5282ea41a2fc15f827f446ec93200","gasLimit":"0x1c9c364","gasUsed":"0x3aa87","hash":"0xf33507f93a046dbdbb80dee5f47b84283297f6c53f1b665adc3cb6fe4138aa84","logsBloom":"0x00000000000020000000000008000060000000000000000000000000000000000000000000000000201000020008000000000000000000000100000000200020000000000000000000000008000000000000000010000000000000000000000000000000000000000000080000000000000000000000002000000010000000000000000000000000000000000000000000040000001000000000000000020000020400000000000000000000000000000000000000000000000000010000000000000002080000000000000000020000000000000000000000000000000000000010020000000000000000000000000100000000000000000000010000000000","miner":"0x0000000000000000000000000000000000000000","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","number":"0x4e3d79","parentHash":"0x01dba3a7eb61dc6dba3f9663c8fb632f76f60a476f57df74c3e5bd9d0a246339","receiptsRoot":"0x70f3bd929735d8edeb953cd30a27e703e7dd3ec4af32cb74fe8ac302f9e7fb87","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","size":"0x754","stateRoot":"0x71af7e25302d1baa4c988c267450eb2c7fa20938fac377809c8d77f8ff8108ac","totalDifficulty":"0x726275","timestamp":"0x60ec1218","baseFeePerGas":"0x7","transactions":["0xa65d391d8149ed0906fab923e870d2bc7f6d27c2be10fe1bcfc6f02869b38ef3","0x369a89354041b7a8cb40edce51c36ebb0ee6ffa4d8056f5a658d90f3bbe1a81a","0xf857daf60d03381b9a6ecb341b62798b424d20dc05763858e13955dd866b489d"],"transactionsRoot":"0x90115f8dc10c08e748675f52f3904615729a014461ca80d72c60239bf75ee209","uncles":[]},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Difficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Miner"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MixHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ParentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sha3Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signature"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Step"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timestamp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transactions"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Withdrawals"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WithdrawalsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExcessDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getblockbyhash"},"See also CLI eth.getBlockByHash")),(0,r.kt)("h2",{id:"eth_getblockbynumber"},"eth_getBlockByNumber"),(0,r.kt)("p",null,"Retrieves a block by number "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getBlockByNumber","params":[blockParameter, returnFullTransactionObjects]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"returnFullTransactionObjects"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getBlockByNumber","params":[blockParameter, returnFullTransactionObjects],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"author":"0x0000000000000000000000000000000000000000","difficulty":"0x1","extraData":"0x000000000000436f6e73656e5379732048797065726c656467657220426573754d3f7b71165a8266fcc569c96b6fcf9971ee4a8df59eeec4dcced0df8d778733429988e21d0124918859f988be9debf4b25fb5282ea41a2fc15f827f446ec93200","gasLimit":"0x1c9c364","gasUsed":"0x3aa87","hash":"0xf33507f93a046dbdbb80dee5f47b84283297f6c53f1b665adc3cb6fe4138aa84","logsBloom":"0x00000000000020000000000008000060000000000000000000000000000000000000000000000000201000020008000000000000000000000100000000200020000000000000000000000008000000000000000010000000000000000000000000000000000000000000080000000000000000000000002000000010000000000000000000000000000000000000000000040000001000000000000000020000020400000000000000000000000000000000000000000000000000010000000000000002080000000000000000020000000000000000000000000000000000000010020000000000000000000000000100000000000000000000010000000000","miner":"0x0000000000000000000000000000000000000000","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","number":"0x4e3d79","parentHash":"0x01dba3a7eb61dc6dba3f9663c8fb632f76f60a476f57df74c3e5bd9d0a246339","receiptsRoot":"0x70f3bd929735d8edeb953cd30a27e703e7dd3ec4af32cb74fe8ac302f9e7fb87","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","size":"0x754","stateRoot":"0x71af7e25302d1baa4c988c267450eb2c7fa20938fac377809c8d77f8ff8108ac","totalDifficulty":"0x726275","timestamp":"0x60ec1218","baseFeePerGas":"0x7","transactions":["0xa65d391d8149ed0906fab923e870d2bc7f6d27c2be10fe1bcfc6f02869b38ef3","0x369a89354041b7a8cb40edce51c36ebb0ee6ffa4d8056f5a658d90f3bbe1a81a","0xf857daf60d03381b9a6ecb341b62798b424d20dc05763858e13955dd866b489d"],"transactionsRoot":"0x90115f8dc10c08e748675f52f3904615729a014461ca80d72c60239bf75ee209","uncles":[]},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Difficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Miner"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MixHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ParentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sha3Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signature"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Step"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timestamp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transactions"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Withdrawals"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WithdrawalsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExcessDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getblockbynumber"},"See also CLI eth.getBlockByNumber")),(0,r.kt)("h2",{id:"eth_getblocktransactioncountbyhash"},"eth_getBlockTransactionCountByHash"),(0,r.kt)("p",null,"Returns number of transactions in the block block hash "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getBlockTransactionCountByHash","params":[blockHash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getBlockTransactionCountByHash","params":[["0x199c2ef63392fb67f929fe0580e11f62fa6c54b9951a624896da91375a6805b1"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x20,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getblocktransactioncountbyhash"},"See also CLI eth.getBlockTransactionCountByHash")),(0,r.kt)("h2",{id:"eth_getblocktransactioncountbynumber"},"eth_getBlockTransactionCountByNumber"),(0,r.kt)("p",null,"Returns number of transactions in the block by block number "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getBlockTransactionCountByNumber","params":[blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getBlockTransactionCountByNumber","params":[["8934677"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x20,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getblocktransactioncountbynumber"},"See also CLI eth.getBlockTransactionCountByNumber")),(0,r.kt)("h2",{id:"eth_getcode"},"eth_getCode"),(0,r.kt)("p",null,"Returns account code at given address and block "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getCode","params":[address, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getCode","params":[address, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getcode"},"See also CLI eth.getCode")),(0,r.kt)("h2",{id:"eth_getfilterchanges"},"eth_getFilterChanges"),(0,r.kt)("p",null,"Reads filter changes "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getFilterChanges","params":[filterId]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"filterId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getFilterChanges","params":[["0x9"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": [],\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getfilterchanges"},"See also CLI eth.getFilterChanges")),(0,r.kt)("h2",{id:"eth_getfilterlogs"},"eth_getFilterLogs"),(0,r.kt)("p",null,"Reads filter changes "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getFilterLogs","params":[filterId]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"filterId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getFilterLogs","params":[["0x9"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": [],\n "id": 1\n}\n')))),(0,r.kt)("h2",{id:"eth_getlogs"},"eth_getLogs"),(0,r.kt)("p",null,"Reads logs "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getLogs","params":[filter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"filter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Filter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getLogs","params":[filter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"objects",value:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Filter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FromBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ToBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Topics"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getlogs"},"See also CLI eth.getLogs")),(0,r.kt)("h2",{id:"eth_getproof"},"eth_getProof"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/ethereum/EIPs/issues/1186"},"https://github.com/ethereum/EIPs/issues/1186")," "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getProof","params":[accountAddress, hashRate, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"accountAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hashRate"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccountProof object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getProof","params":[accountAddress, hashRate, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": "accountProof": ["0xf90211a0446f43a2d3e433732c75bcf3519f4844e0441a4d39b31395ee9a65700c30d3b4a0b9720db63afe9909418fb6e02c9d9f225310856549cc1b66b486041f2d867250a046e6e560e52d4fe0d2f6609f489ba85f18ad1655fee18452588dc08388fbd711a01e68f36c91bd15cbf65587d6db2a7cbd6635907291e77dd80152161da9a28a48a0d2178a1891c26ccaa2d2cec82c231a0640a26a1f5e07c7b5493761bdb3aa94e5a0fa909327d406980a2e602eadd3f56cf8dc89320d4662340962e9cac2beee3d8da0a0fc71e7dec6320a993b4b65b2f82544910d0a4a7c6f8c5a1ebaa38357d259e3a0680161dec84c5f1c8d5e2a585c9708b1b6fbc2dc664a432e045d99f5e7d89259a0f76a745765be58d46d795c44d3900a4a05b6396530244d50822616c8bbb11e19a0594824352d58f5caff819c8df9581b6a41d0e94eb584ed0431d48b48f320bb5ca0e762eb52b2bcacd728fac605de6229dc83588001ecddcd3b454b64c393ee69eda0d319cf1021af0a8535e4916c3404c84917957d73d0711f71fd6456b4533993bba0878240238a894e6fa798671ac3792563c6666a7c7fba8066d090b65d6a7aa701a03c03fdb4d8f4b241442814cbab24ddb42b75c78874f92fedc162b65d0820fc4da06a3318509aa9ff009b9acb9b348f197a134a46a46295714f436d4fbb19057e69a04139df1b6e0a59b093b35f34f9e5e890bc06832e63b366d768dc29e8638b828480","0xf90211a023459f17e04fba3d19c6993f5be413969842fdbdc85d234a91b2f6b08a38be87a0153060eafecbff55ef0794802ef722b6c66698141cdc0610352d3a426976adeba0bd642b7c5111a1fd09da33feb6df031dc352b6cb20fbbe5ebe3eb328db233bd4a0705bff29e05c7ef69c07fecaa5db2457b2f124befc82f9fe6b0e54c8e35632eba03c1b4ffc076434de97050d2351c24689cfaefaa6cf8dc398dd3b8ce365e652c1a0a1ebf845ea0eb252e2a2e5c422ccd74878a3733144dfd62bcaad34758cc98652a01e4184586f5bdbb17ba74fd87539f02378c7adcef99f1538108f9555520e32d6a0b8acdfd5b644fa2c9a54f68039a3af4c6562c1e7f91ea9e63bda5a849f1260b6a05c1f036a2e7a5829799fc7df2d87eac3e7aee55df461b040c36f5b5c61781059a0a67fd871d32642e44120331f76c2616096d04d7fa1a7db421bafbc39713d8bfba085c15b7ab64f61670f4422adb82176d5808fad4abde6fddda507b0e5ff92ba14a0d95e8f16a39d4e52c67c617eef486adcd947854373ac074ff498150c7ca1ab5da03d9d7be595000872ad6aec05667ad85e1aaaeb2050a692818d3e60d8f1628d8ba0984c657192b052d13fb717051631d67fbc83dd5dcb4d074a2fddc01aa122d95ba03643408862d758aea269c05027a1cd616c957e0db5daea529b56964db8b4f04ba01020dce8d692c3d84d9ae3e42c35e4d8adbddf7b4dd3e09e543fc980849f016e80","0xf90211a04c71b4b56ed723da1c1353ec1b4c23e71dfa821664d4041c1ee1770221f507b6a031c851f261a38df9b2bece1a1cb6985bccfaa10d2bb15954b82cd2ceaad87032a08a4a3d0cc260cf0e0fef54490ce45796fdd3f522451976ca7834563c839c630fa003d074f79074566cd33a3d6a57b6ca8426ca9ea972f66b5dfde00f73287fcfcea07003d29a5bd192038600118ab5941af5c79c1f0fc6184ad564180b809c36c7c4a05f181c50402dcff567abe1c6679a8d5e3825125abca4d969c7cbf76503416813a06a85dfca80e442ef79b66162099d52eaf67718589eb794755ce57dc071a85cdaa085cba9e6937a8a5f0a7d1b5ee9eb9f03c40f89eb13d9d4e0e5fbc574c2b852faa063f93dce441a3373cfc2d1c855884682dfd8d09d1eb9844c73d88eb8d5a7cdfda0e4bc0d2597e5fd0a4cd5e76a03b657ef8959264bdeaf95c4412ebd4ff736ce44a00239290e698aa04485e0c342cfb76ccf27a3e45a161b8b1b534e0c46707b92c8a0080c3439fb84730924539797aad8d017c5f7e008314ed9086450d80ec2b0d7aba0861dbe37b9b9e0f58b6fdb83eec28045c5f7f1861530f47f78fc8a2b18a6bd8da0036697e8dc063e9086d115d468c934a01123adb3c66dcc236ee4aa8141888626a033c6f574ee79d9b1322e9ca1131a5984b33cc8881e6ac8ebd6ca36f3437cedcda07fc2855e6bb0f276202094dffe49f2b62f2366d9aba9db3ffe76d62bcdc29f0d80","0xf90211a06995d919b53eefa0b097d75c2a5dee2c54109a06d3b60586327fa0086437b801a05c7d7c92f9f1e49cf27c5d97b4a96302f033d42df5b1d7c013ef05031d67e567a05278417d007913a1e7d6606fb464e7b81f6cee91b6a1d250c67b3822d9fc68d8a0fba6d9cd68fe72db07af9d99e30c32502e0afb15ee9712f6781014195444b9e1a07dca25ba23f429b5960d9feb23367e2a088e50211f280118b7f1703e6d47103fa0399eb6e0d4390688f6b28df56c7ad72d6b6cbac9066110c6a727fe35cd889e9da08ef84ddaa3b70095fb5624878289744740a9f8761ef1132ba722abc977a218ffa04296811ae184892e2d5ecc18d05fc6279d6168eb0f3abb1f97d8d0a0721c12fba05c46766c579b8a0b8a0b79b84f6cd1e5dae1c53a2988883b0385daa2cf3bdf82a01a4ba17dd1b59147a321dd374a22a0d959f1a79d70132db7f1a8b89968ff6062a0f7ffc6f3921c6bccd47c862519409e63f51d39aaa215819c664b1adb48a940b0a0dc6e636385407900a649917fb772b0972d50d197e9fd5cdb853a1c98a29e6a47a0674b224cf784c59ca937bfebbdcd8dec05ddbd57400b04f5965558a0c2d2299ca0f95ce8c921c5b17ebf74563f2496a88631aa6a697bfd9e3e22b326efa453115ea0fc133bc6b9dd098933c816660df2959074f47dfc4ab3a10fd2059a2b2e0e911aa057cac15218d6013890df78eec099144ba2000e3eea73a3498d0eb9b1f733459080","0xf90211a0400aafe69a1a482277db720d12b9c0b98695f5dd78c6faf5421b3ddac50165a6a0235987542e4b37aa8e6957776c9dff11d6818797db5ad505de5e0049045c7e20a0f573b4776f8b323b7d55850300d53855cfa6fa5fe6e36ba64da6bb263fef774aa0b3a36d14d660c3492785b0f1488a2231b6d83bd51268685b95ba9267aa331fe2a0096e8c65bae8fce7d234710a1e1b8c98bd4fb2d56f8bb2eda7ef20d1cf31c7e2a059194c8bf50c2ac393c4c60a59c7ddf0c515bd9f545fc4ef212629a8b96af62aa0ffe882f4e2f1e8e49c7777f6f9b4438a9f31d4e5cefe82c96fdd3587d9a95173a00127ced7fdbdd57cd5ed8b766c9312c09e0c67a350087d22b4cc7b2d17a45479a0cfc030a250448838caa716cd2767cd1a4837b29019f474980720c94fe2ce412ea079ec358d2b4122692bf70eb73a0ddb0ff4bfeb05d503fe1acafe068e2d3d33cfa0733e2ccdc638ca3c940c566c742a1b9d58f7caaa062e8a121c07f5e3367160a8a0aa1f403798b71c67b821e6f6128cc5366bebe145ebd563714cf9972b2474814ea01b988afc628922aeed3de606a8a462093f1c0c803a563bbe178552a360bad1e1a0082741e2219024bf4e19f5b1b0643e5e885cb7dfb4cdc0a51faf5bd9f92ff9b6a03c86490fe8f0256be44b95815086d95cb62fdbc3ede63ca08d12d68f274b7fc5a03a81565e860ac32921ed4c9f4e0ace3b341c342abd030d4955f2d1e64dd81d2b80","0xf8f1a0bd9a0d9559513a6c7bf427816142d254d5a9049e9ff385f3514b50cb828951fc808080a07d37353f509c9bdc99635bd75fde71a6ef99271154ac4ffd5c437e0b951d5eaca029e3beec2f52c99a1fa73251ed64486f2766af3dcb950900679f7fd740badfdaa09b348c93803521a41bd2a754e3ea5435bb2663724cdfb70a87984458b53f03dea0904e696aceac8c89e2825e0dae8add52a9b46faef2ffbabb932e8bc1267e48ba80a0935dedba6ec5fb5b89285993c5f1be0cb77492e63e11bb38b5aca18011699eb8a06b52f587932dfb669f6cbefe35b251c6d8e6b5e8a2e1c1a7c2a452a4f2917b0d808080808080"],"address":"0x7f0d15c7faae65896648c8273b6d7e43f58fa842","balance":"0x0","codeHash":"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nonce":"0x0","storageHash":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","storageProof":[{"key":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","proof":[],"value":"0x00"],\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"object",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccountProof")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Proof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Balance"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CodeHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageProofs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"StorageProof[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"StorageProof[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Proof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Key"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getproof"},"See also CLI eth.getProof")),(0,r.kt)("h2",{id:"eth_getstorageat"},"eth_getStorageAt"),(0,r.kt)("p",null,"Returns storage data at address. storage_index "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getStorageAt","params":[address, positionIndex, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getStorageAt","params":[address, positionIndex, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getstorageat"},"See also CLI eth.getStorageAt")),(0,r.kt)("h2",{id:"eth_gettransactionbyblockhashandindex"},"eth_getTransactionByBlockHashAndIndex"),(0,r.kt)("p",null,"Retrieves a transaction by block hash and index "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getTransactionByBlockHashAndIndex","params":[blockHash, positionIndex]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getTransactionByBlockHashAndIndex","params":[blockHash, positionIndex],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"hash":"0xb87ec4c8cb36a06f49cdd93c2e9f63e0b7db9af07a605c8bcf1fbe705162344e","nonce":"0x5d","blockHash":"0xfe47fb3539ccce9d19a032473effdd6ce19e3c921bbae2746152ccf82ceef48e","blockNumber":"0x4dfc90","transactionIndex":"0x2","from":"0xaa9a0f962e433755c843175488fe088fccf8526f","to":"0x074b24cef703f17fe123fa1b82081055775b7004","value":"0x0","gasPrice":"0x2540be401","gas":"0x130ab","data":"0x428dc451000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000005d3c0f4ca5ee99f8e8f59ff9a5fab04f6a7e007f0000000000000000000000009d233a907e065855d2a9c7d4b552ea27fb2e5a36000000000000000000000000cbe56b00d173a26a5978ce90db2e33622fd95a28","input":"0x428dc451000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000005d3c0f4ca5ee99f8e8f59ff9a5fab04f6a7e007f0000000000000000000000009d233a907e065855d2a9c7d4b552ea27fb2e5a36000000000000000000000000cbe56b00d173a26a5978ce90db2e33622fd95a28","type":"0x0","v":"0x2e","s":"0x696f6db060a6dd30435a7f592506ba3213f81cf4704e211a1a45a99f8984189a","r":"0x7e07076186e38b68cb7e4f68a04258a5744c5a2ad1a7153456ee662a07902954"},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("h2",{id:"eth_gettransactionbyblocknumberandindex"},"eth_getTransactionByBlockNumberAndIndex"),(0,r.kt)("p",null,"Retrieves a transaction by block number and index "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getTransactionByBlockNumberAndIndex","params":[blockParameter, positionIndex]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getTransactionByBlockNumberAndIndex","params":[blockParameter, positionIndex],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"hash":"0xfd320a4949990929f64b52041c58a74c8ce13289b3d6853bd8073b0580aa031a","nonce":"0x5b","blockHash":"0xd779e1a5ce8f34544d66d219bb3e5331a7b280fae89a36d7d52813a23e1ca1e3","blockNumber":"0x4dfdd8","transactionIndex":"0x8","from":"0xadb540569e2db497bd973c141b0b63be98461e40","to":"0x074b24cef703f17fe123fa1b82081055775b7004","value":"0x0","gasPrice":"0x12a05f200","gas":"0x927c0","data":"0x428dc451000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000005d3c0f4ca5ee99f8e8f59ff9a5fab04f6a7e007f0000000000000000000000009d233a907e065855d2a9c7d4b552ea27fb2e5a36000000000000000000000000cbe56b00d173a26a5978ce90db2e33622fd95a28","input":"0x428dc451000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000005d3c0f4ca5ee99f8e8f59ff9a5fab04f6a7e007f0000000000000000000000009d233a907e065855d2a9c7d4b552ea27fb2e5a36000000000000000000000000cbe56b00d173a26a5978ce90db2e33622fd95a28","type":"0x0","v":"0x2e","s":"0x37b90a929884787df717c87258f0434e2f115ce2fbb4bfc230322112fa9d5bbc","r":"0x5222eff9e16b5c3e9e8901d9c45fc8e0f9cf774e8a56546a504025ef67ceefec"},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-gettransactionbyblocknumberandindex"},"See also CLI eth.getTransactionByBlockNumberAndIndex")),(0,r.kt)("h2",{id:"eth_gettransactionbyhash"},"eth_getTransactionByHash"),(0,r.kt)("p",null,"Retrieves a transaction by hash "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getTransactionByHash","params":[transactionHash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getTransactionByHash","params":["0xabca23910646013d608ec671de099447ab60b2b7159ad8319c3c088e8d9ea0fa"],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"hash":"0xabca23910646013d608ec671de099447ab60b2b7159ad8319c3c088e8d9ea0fa","nonce":"0x1a","blockHash":"0xcb6756f69e0469acd5e5bb77966be580786ec2c11de85c9ddfd75257010e34f8","blockNumber":"0x4dfbc7","transactionIndex":"0xb","from":"0xe1e7ab1c643dbe5b24739fdf2a5c7c193b54dd99","to":"0x0b10e304088b2ba2b2acfd2f72573faad31a13a5","value":"0x0","gasPrice":"0x2540be400","gas":"0xb4a4","data":"0x095ea7b300000000000000000000000092c1576845703089cf6c0788379ed81f75f45dd500000000000000000000000000000000000000000000000000000002540be400","input":"0x095ea7b300000000000000000000000092c1576845703089cf6c0788379ed81f75f45dd500000000000000000000000000000000000000000000000000000002540be400","type":"0x0","v":"0x2d","s":"0x496d72d435ead8a8a9a865b14d6a102c1a9f848681d050dbbf11c522c612235","r":"0xc8350e831203fecc8bff41f5cf858ac1d121e4b4d9e59c1137cc9440516ca9fd"},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-gettransactionbyhash"},"See also CLI eth.getTransactionByHash")),(0,r.kt)("h2",{id:"eth_gettransactioncount"},"eth_getTransactionCount"),(0,r.kt)("p",null,"Returns account nonce (number of trnsactions from the account since genesis) at the given block number "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getTransactionCount","params":[address, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getTransactionCount","params":[address, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x3e,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-gettransactioncount"},"See also CLI eth.getTransactionCount")),(0,r.kt)("h2",{id:"eth_gettransactionreceipt"},"eth_getTransactionReceipt"),(0,r.kt)("p",null,"Retrieves a transaction receipt by tx hash "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getTransactionReceipt","params":[txHashData]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txHashData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getTransactionReceipt","params":[["0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"transactionHash":"0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71","transactionIndex":"0x7","blockHash":"0x42def051b21038905cd2a2bc28d460a94df2249466847f0e1bcb4be4eb21891a","blockNumber":"0x4e3f39","cumulativeGasUsed":"0x62c9d","gasUsed":"0xe384","effectiveGasPrice":"0x12a05f200","from":"0x0afe0a94415e8974052e7e6cfab19ee1c2ef4f69","to":"0x19e8c84d4943e58b035626b064cfc76ee13ee6cb","contractAddress":null,"logs":[{"removed":false,"logIndex":"0x0","transactionIndex":"0x7","transactionHash":"0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71","blockHash":"0x42def051b21038905cd2a2bc28d460a94df2249466847f0e1bcb4be4eb21891a","blockNumber":"0x4e3f39","address":"0x2ac3c1d3e24b45c6c310534bc2dd84b5ed576335","data":"0x0000000000000000000000000000000000000000000000000000000000000000","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000019e8c84d4943e58b035626b064cfc76ee13ee6cb","0x00000000000000000000000028078300a459a9e136f872285654cdc74463041e"]},{"removed":false,"logIndex":"0x1","transactionIndex":"0x7","transactionHash":"0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71","blockHash":"0x42def051b21038905cd2a2bc28d460a94df2249466847f0e1bcb4be4eb21891a","blockNumber":"0x4e3f39","address":"0x19e8c84d4943e58b035626b064cfc76ee13ee6cb","data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007735940000000000000000000000000000000000000000000000000000000000000000000","topics":["0x950494fc3642fae5221b6c32e0e45765c95ebb382a04a71b160db0843e74c99f","0x0000000000000000000000000afe0a94415e8974052e7e6cfab19ee1c2ef4f69","0x00000000000000000000000028078300a459a9e136f872285654cdc74463041e","0x0000000000000000000000000afe0a94415e8974052e7e6cfab19ee1c2ef4f69"]}],"logsBloom":"0x00000000000000000000000000000000000000000000000020000000000000800000000000000000000400000000000000000000000000000000000000002000000000000000000000000008000000000000000000000000000000000000000000000002002000000000000000000000000000000000000000000812000000000000000000000000000001000000000000000000000008000400008000000000000000000000000000000000000000000000000000000000800000000000000000000002000000000000000000000000000000000000100000000000000000002000000000000000000000000010000000000000000000000400000000020000","status":"0x1","type":"0x0"},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CumulativeGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EffectiveGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ContractAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Logs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"LogEntryForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Root"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Status"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"LogEntryForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Removed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Topics"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Keccak[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-gettransactionreceipt"},"See also CLI eth.getTransactionReceipt")),(0,r.kt)("h2",{id:"eth_getunclebyblockhashandindex"},"eth_getUncleByBlockHashAndIndex"),(0,r.kt)("p",null,"Retrieves an uncle block header by block hash and uncle index "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getUncleByBlockHashAndIndex","params":[blockHashData, positionIndex]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHashData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getUncleByBlockHashAndIndex","params":[blockHashData, positionIndex],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"objects",value:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Difficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Miner"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MixHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ParentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sha3Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signature"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Step"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timestamp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transactions"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Withdrawals"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WithdrawalsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExcessDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getunclebyblockhashandindex"},"See also CLI eth.getUncleByBlockHashAndIndex")),(0,r.kt)("h2",{id:"eth_getunclebyblocknumberandindex"},"eth_getUncleByBlockNumberAndIndex"),(0,r.kt)("p",null,"Retrieves an uncle block header by block number and uncle index "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getUncleByBlockNumberAndIndex","params":[blockParameter, positionIndex]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getUncleByBlockNumberAndIndex","params":[blockParameter, positionIndex],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"objects",value:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Difficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Miner"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MixHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ParentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sha3Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signature"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Step"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timestamp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transactions"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Withdrawals"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WithdrawalsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExcessDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getunclebyblocknumberandindex"},"See also CLI eth.getUncleByBlockNumberAndIndex")),(0,r.kt)("h2",{id:"eth_getunclecountbyblockhash"},"eth_getUncleCountByBlockHash"),(0,r.kt)("p",null,"Returns number of uncles in the block by block hash "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getUncleCountByBlockHash","params":[blockHash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getUncleCountByBlockHash","params":[["0xe495c3385bb9162103bc07989d7160c38759e017c37c7d0608268bd5989d6bed "]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x0,\n "id": 1\n}\n')))),(0,r.kt)("h2",{id:"eth_getunclecountbyblocknumber"},"eth_getUncleCountByBlockNumber"),(0,r.kt)("p",null,"Returns number of uncles in the block by block number "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_getUncleCountByBlockNumber","params":[blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_getUncleCountByBlockNumber","params":[["5127400"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x0,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-getunclecountbyblocknumber"},"See also CLI eth.getUncleCountByBlockNumber")),(0,r.kt)("h2",{id:"eth_newblockfilter"},"eth_newBlockFilter"),(0,r.kt)("p",null,"Creates an update filter "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_newBlockFilter","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_newBlockFilter","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x0,\n "id": 1\n}\n')))),(0,r.kt)("h2",{id:"eth_newfilter"},"eth_newFilter"),(0,r.kt)("p",null,"Creates an update filter "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_newFilter","params":[filter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"filter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Filter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_newFilter","params":[[{"toBlock":"latest"}]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x9,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Filter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FromBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ToBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Topics"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))))),(0,r.kt)("h2",{id:"eth_newpendingtransactionfilter"},"eth_newPendingTransactionFilter"),(0,r.kt)("p",null,"Creates an update filter "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_newPendingTransactionFilter","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_newPendingTransactionFilter","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x1,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-newpendingtransactionfilter"},"See also CLI eth.newPendingTransactionFilter")),(0,r.kt)("h2",{id:"eth_pendingtransactions"},"eth_pendingTransactions"),(0,r.kt)("p",null,"Returns the pending transactions list "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_pendingTransactions","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_pendingTransactions","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": [],\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-pendingtransactions"},"See also CLI eth.pendingTransactions")),(0,r.kt)("h2",{id:"eth_protocolversion"},"eth_protocolVersion"),(0,r.kt)("p",null,"Returns ETH protocol version "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_protocolVersion","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_protocolVersion","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x41,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-protocolversion"},"See also CLI eth.protocolVersion")),(0,r.kt)("h2",{id:"eth_sendrawtransaction"},"eth_sendRawTransaction"),(0,r.kt)("p",null,"Send a raw transaction to the tx pool and broadcasting "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_sendRawTransaction","params":[transaction]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transaction"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_sendRawTransaction","params":[["0xf86380843b9aca0082520894b943b13292086848d8180d75c73361107920bb1a80802ea0385656b91b8f1f5139e9ba3449b946a446c9cfe7adb91b180ddc22c33b17ac4da01fe821879d386b140fd8080dcaaa98b8c709c5025c8c4dea1334609ebac41b6c"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x7a5a94d5b5e3ce017ce2c2022f02ec5db10611c43695c3256861bdb19317ab0e,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-sendrawtransaction"},"See also CLI eth.sendRawTransaction")),(0,r.kt)("h2",{id:"eth_sendtransaction"},"eth_sendTransaction"),(0,r.kt)("p",null,"Send a transaction to the tx pool and broadcasting "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_sendTransaction","params":[rpcTx]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"rpcTx"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"eth_sendTransaction","params":[[{"From": "0xc2208fe87805279b03c1a8a78d7ee4bfdb0e48ee", "Gas":"21000","GasPrice":"20000000000", "Nonce":"23794", "To":"0x2d44c0e097f6cd0f514edac633d82e01280b4a5c"}]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0x03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760,\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-sendtransaction"},"See also CLI eth.sendTransaction")),(0,r.kt)("h2",{id:"eth_syncing"},"eth_syncing"),(0,r.kt)("p",null,"Returns syncing status "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_syncing","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"SyncingResult object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"eth_syncing","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(d.Z,{value:"Response",label:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"isSyncing":true,"startingBlock":"0x0","currentBlock":"0x0","highestBlock":"0x4df8a4"},"id":1},\n "id": 1\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SyncingResult")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsSyncing"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StartingBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CurrentBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"HighestBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SyncMode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"SyncMode object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SyncMode")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type")))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/eth#eth-syncing"},"See also CLI eth.syncing")),(0,r.kt)("h2",{id:"eth_uninstallfilter"},"eth_uninstallFilter"),(0,r.kt)("p",null,"Creates an update filter "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"eth_uninstallFilter","params":[filterId]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"filterId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of eth_uninstallFilter"',title:'"Example',request:!0,of:!0,'eth_uninstallFilter"':!0},'curl --data \'{"method":"eth_uninstallFilter","params":[filterId],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8f40cd51.58e64645.js b/assets/js/8f40cd51.58e64645.js new file mode 100644 index 000000000..1eb0b8056 --- /dev/null +++ b/assets/js/8f40cd51.58e64645.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1424],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>f});var n=r(7294);function i(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 a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},m=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),s=p(r),u=i,f=s["".concat(l,".").concat(u)]||s[u]||d[u]||o;return r?n.createElement(f,a(a({ref:t},m),{},{components:r})):n.createElement(f,a({ref:t},m))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=u;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[s]="string"==typeof e?e:i,a[1]=c;for(var p=2;p<o;p++)a[p]=r[p];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},7968:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(7462),i=(r(7294),r(3905));const o={},a="Trie",c={unversionedId:"monitoring/metrics-explanation/trie",id:"monitoring/metrics-explanation/trie",title:"Trie",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/trie.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/trie",permalink:"/docs/monitoring/metrics-explanation/trie",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/trie.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Store module",permalink:"/docs/monitoring/metrics-explanation/store"},next:{title:"Trie.Pruning",permalink:"/docs/monitoring/metrics-explanation/trie.pruning"}},l={},p=[],m={toc:p},s="wrapper";function d(e){let{components:t,...r}=e;return(0,i.kt)(s,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"trie"},"Trie"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,i.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"nethermind_tree_node_hash_calculations"),(0,i.kt)("td",{parentName:"tr",align:"left"},"Number of trie node hash calculations.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"nethermind_tree_node_rlp_decodings"),(0,i.kt)("td",{parentName:"tr",align:"left"},"Number of trie node RLP decodings.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"nethermind_tree_node_rlp_encodings"),(0,i.kt)("td",{parentName:"tr",align:"left"},"Number of trie node RLP encodings.")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8fc202ae.ca5b4d11.js b/assets/js/8fc202ae.ca5b4d11.js new file mode 100644 index 000000000..dc954ec68 --- /dev/null +++ b/assets/js/8fc202ae.ca5b4d11.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3175],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>b});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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=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)}},m=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),m=r,b=p["".concat(u,".").concat(m)]||p[m]||d[m]||l;return n?a.createElement(b,o(o({ref:t},c),{},{components:n})):a.createElement(b,o({ref:t},c))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=m;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<l;s++)o[s]=n[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(7294),r=n(6010);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:n,className:o}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>g});var a=n(7462),r=n(7294),l=n(6010),o=n(2466),i=n(6550),u=n(1980),s=n(7392),c=n(12);function p(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function d(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??p(n);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function m(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:n}=e;const a=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,u._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(a.location.search);t.set(l,e),a.replace({...a.location,search:t.toString()})}),[l,a])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,l=d(e),[o,i]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:l}))),[u,s]=b({queryString:n,groupId:a}),[p,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,l]=(0,c.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:a}),h=(()=>{const e=u??p;return m({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{h&&i(h)}),[h]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),s(e),f(e)}),[s,f,l]),tabValues:l}}var h=n(2389);const k={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:n,selectedValue:i,selectValue:u,tabValues:s}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,o.o5)(),d=e=>{const t=e.currentTarget,n=c.indexOf(t),a=s[n].value;a!==i&&(p(t),u(a))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":n},t)},s.map((e=>{let{value:t,label:n,attributes:o}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},o,{className:(0,l.Z)("tabs__item",k.tabItem,o?.className,{"tabs__item--active":i===t})}),n??t)})))}function N(e){let{lazy:t,children:n,selectedValue:a}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=f(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",k.tabList)},r.createElement(y,(0,a.Z)({},e,t)),r.createElement(N,(0,a.Z)({},e,t)))}function g(e){const t=(0,h.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}},6517:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>b,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var a=n(7462),r=(n(7294),n(3905)),l=n(4866),o=n(5162);const i={},u="net",s={unversionedId:"nethermind-utilities/cli/net",id:"nethermind-utilities/cli/net",title:"net",description:"net.localEnode",source:"@site/docs/06-nethermind-utilities/cli/net.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/net",permalink:"/docs/nethermind-utilities/cli/net",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/net.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"eth",permalink:"/docs/nethermind-utilities/cli/eth"},next:{title:"node",permalink:"/docs/nethermind-utilities/cli/node"}},c={},p=[{value:"net.localEnode",id:"netlocalenode",level:2},{value:"net.peerCount",id:"netpeercount",level:2},{value:"net.version",id:"netversion",level:2}],d={toc:p},m="wrapper";function b(e){let{components:t,...n}=e;return(0,r.kt)(m,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"net"},"net"),(0,r.kt)("h2",{id:"netlocalenode"},"net.localEnode"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"net.localEnode"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"net.localEnode\n"))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"enode://a9cfa3cb16b537e131b0f141b5ef0c0ab9bf0dbec7799c3fc7bf8a974ff3e74e9b3258951b285dfed07ab395049bcd65fed96116bb92561612682551ec458497@18.193.43.58:30303\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/net#net_localenode"},"See also JSON RPC net_localEnode")),(0,r.kt)("h2",{id:"netpeercount"},"net.peerCount"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"net.peerCount"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"net.peerCount\n"))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x11\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/net#net_peercount"},"See also JSON RPC net_peerCount")),(0,r.kt)("h2",{id:"netversion"},"net.version"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"net.version"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"net.version\n"))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"4\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/net#net_version"},"See also JSON RPC net_version")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/925b3f96.bd54f43b.js b/assets/js/925b3f96.bd54f43b.js new file mode 100644 index 000000000..2c061377e --- /dev/null +++ b/assets/js/925b3f96.bd54f43b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9003],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});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 a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=o.createContext({}),l=function(e){var t=o.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=l(e.components);return o.createElement(u.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},g=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=l(r),g=n,f=p["".concat(u,".").concat(g)]||p[g]||m[g]||a;return r?o.createElement(f,i(i({ref:t},c),{},{components:r})):o.createElement(f,i({ref:t},c))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=g;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[p]="string"==typeof e?e:n,i[1]=s;for(var l=2;l<a;l++)i[l]=r[l];return o.createElement.apply(null,i)}return o.createElement.apply(null,r)}g.displayName="MDXCreateElement"},8856:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var o=r(7462),n=(r(7294),r(3905));const a={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},i=void 0,s={permalink:"/blog/first-blog-post",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",formattedDate:"May 28, 2019",tags:[{label:"hola",permalink:"/blog/tags/hola"},{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},prevItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},u={authorsImageUrls:[void 0]},l=[],c={toc:l},p="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.bbc30494.js b/assets/js/935f2afb.bbc30494.js new file mode 100644 index 000000000..fc56165ed --- /dev/null +++ b/assets/js/935f2afb.bbc30494.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).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":{"tutorialSidebar":[{"type":"category","label":"Getting Started","collapsible":true,"collapsed":true,"customProps":{"description":"General overview and introduction of Nethermind Execution Client"},"items":[{"type":"link","label":"Installing Nethermind","href":"/docs/getting-started/installing-nethermind","docId":"getting-started/installing-nethermind"},{"type":"link","label":"Manage Nethermind with systemd","href":"/docs/getting-started/manage-nethermind-with-systemd","docId":"getting-started/manage-nethermind-with-systemd"},{"type":"link","label":"Migrating From Geth","href":"/docs/getting-started/migrating-from-geth","docId":"getting-started/migrating-from-geth"},{"type":"link","label":"Networks","href":"/docs/getting-started/networks","docId":"getting-started/networks"},{"type":"link","label":"System Requirements","href":"/docs/getting-started/system-requirements","docId":"getting-started/system-requirements"}],"href":"/docs/category/getting-started"},{"type":"category","label":"Fundamentals","collapsible":true,"collapsed":true,"customProps":{"description":"General overview and introduction of Nethermind Execution Client"},"items":[{"type":"category","label":"running-nethermind","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Running the client","href":"/docs/fundamentals/running-nethermind/running-the-client","docId":"fundamentals/running-nethermind/running-the-client"},{"type":"link","label":"Runtime","href":"/docs/fundamentals/running-nethermind/runtime","docId":"fundamentals/running-nethermind/runtime"}]},{"type":"link","label":"Sync modes","href":"/docs/fundamentals/sync-modes","docId":"fundamentals/sync-modes"},{"type":"category","label":"Configuration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"AccountAbstraction","href":"/docs/fundamentals/configuration/accountabstraction","docId":"fundamentals/configuration/accountabstraction"},{"type":"link","label":"Aura","href":"/docs/fundamentals/configuration/aura","docId":"fundamentals/configuration/aura"},{"type":"link","label":"AuRaMerge","href":"/docs/fundamentals/configuration/auramerge","docId":"fundamentals/configuration/auramerge"},{"type":"link","label":"Blocks","href":"/docs/fundamentals/configuration/blocks","docId":"fundamentals/configuration/blocks"},{"type":"link","label":"Bloom","href":"/docs/fundamentals/configuration/bloom","docId":"fundamentals/configuration/bloom"},{"type":"link","label":"EthStats","href":"/docs/fundamentals/configuration/ethstats","docId":"fundamentals/configuration/ethstats"},{"type":"link","label":"HealthChecks","href":"/docs/fundamentals/configuration/healthchecks","docId":"fundamentals/configuration/healthchecks"},{"type":"link","label":"Hive","href":"/docs/fundamentals/configuration/hive","docId":"fundamentals/configuration/hive"},{"type":"link","label":"Init","href":"/docs/fundamentals/configuration/init","docId":"fundamentals/configuration/init"},{"type":"link","label":"JsonRpc","href":"/docs/fundamentals/configuration/jsonrpc","docId":"fundamentals/configuration/jsonrpc"},{"type":"link","label":"KeyStore","href":"/docs/fundamentals/configuration/keystore","docId":"fundamentals/configuration/keystore"},{"type":"link","label":"Merge","href":"/docs/fundamentals/configuration/merge","docId":"fundamentals/configuration/merge"},{"type":"link","label":"Metrics","href":"/docs/fundamentals/configuration/metrics","docId":"fundamentals/configuration/metrics"},{"type":"link","label":"Mev","href":"/docs/fundamentals/configuration/mev","docId":"fundamentals/configuration/mev"},{"type":"link","label":"Mining","href":"/docs/fundamentals/configuration/mining","docId":"fundamentals/configuration/mining"},{"type":"link","label":"Network","href":"/docs/fundamentals/configuration/network","docId":"fundamentals/configuration/network"},{"type":"link","label":"Plugin","href":"/docs/fundamentals/configuration/plugin","docId":"fundamentals/configuration/plugin"},{"type":"link","label":"Pruning","href":"/docs/fundamentals/configuration/pruning","docId":"fundamentals/configuration/pruning"},{"type":"link","label":"Receipt","href":"/docs/fundamentals/configuration/receipt","docId":"fundamentals/configuration/receipt"},{"type":"link","label":"Sample configuration","href":"/docs/fundamentals/configuration/sample-configuration","docId":"fundamentals/configuration/sample-configuration"},{"type":"link","label":"Seq","href":"/docs/fundamentals/configuration/seq","docId":"fundamentals/configuration/seq"},{"type":"link","label":"Sync","href":"/docs/fundamentals/configuration/sync","docId":"fundamentals/configuration/sync"},{"type":"link","label":"TraceStore","href":"/docs/fundamentals/configuration/tracestore","docId":"fundamentals/configuration/tracestore"},{"type":"link","label":"TxPool","href":"/docs/fundamentals/configuration/txpool","docId":"fundamentals/configuration/txpool"},{"type":"link","label":"Wallet","href":"/docs/fundamentals/configuration/wallet","docId":"fundamentals/configuration/wallet"}],"href":"/docs/fundamentals/configuration/"},{"type":"link","label":"Security","href":"/docs/fundamentals/security","docId":"fundamentals/security"},{"type":"category","label":"logs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Logging Configuration","href":"/docs/fundamentals/logs/logging-configuration","docId":"fundamentals/logs/logging-configuration"},{"type":"link","label":"Explaining Nethermind logs","href":"/docs/fundamentals/logs/logs","docId":"fundamentals/logs/logs"}]},{"type":"link","label":"Database","href":"/docs/fundamentals/database","docId":"fundamentals/database"},{"type":"category","label":"How to reduce database size","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Full Pruning","href":"/docs/fundamentals/how-to-reduce-database-size/full-pruning","docId":"fundamentals/how-to-reduce-database-size/full-pruning"},{"type":"link","label":"Resync database from scratch","href":"/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch","docId":"fundamentals/how-to-reduce-database-size/resync-database-from-scratch"}],"href":"/docs/fundamentals/how-to-reduce-database-size/"},{"type":"category","label":"Private Networks","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to setup a Nethermind only Clique based chain","href":"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain","docId":"fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain"},{"type":"link","label":"How to setup a Nethermind only Spaceneth based chain","href":"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain","docId":"fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain"}],"href":"/docs/fundamentals/private-networks/"},{"type":"link","label":"Running Nethermind & CL","href":"/docs/fundamentals/running-nethermind-post-merge","docId":"fundamentals/running-nethermind-post-merge"}],"href":"/docs/category/fundamentals"},{"type":"category","label":"Interacting With Nethermind","collapsible":true,"collapsed":true,"customProps":{"description":"JSON-RPC API for the Ethereum network."},"items":[{"type":"category","label":"JSON RPC","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"admin","href":"/docs/interacting-with-nethermind/json-rpc-api/admin","docId":"interacting-with-nethermind/json-rpc-api/admin"},{"type":"link","label":"clique","href":"/docs/interacting-with-nethermind/json-rpc-api/clique","docId":"interacting-with-nethermind/json-rpc-api/clique"},{"type":"link","label":"debug","href":"/docs/interacting-with-nethermind/json-rpc-api/debug","docId":"interacting-with-nethermind/json-rpc-api/debug"},{"type":"link","label":"Engine JsonRpc Config Example","href":"/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example","docId":"interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example"},{"type":"link","label":"eth","href":"/docs/interacting-with-nethermind/json-rpc-api/eth","docId":"interacting-with-nethermind/json-rpc-api/eth"},{"type":"link","label":"evm","href":"/docs/interacting-with-nethermind/json-rpc-api/evm","docId":"interacting-with-nethermind/json-rpc-api/evm"},{"type":"link","label":"net","href":"/docs/interacting-with-nethermind/json-rpc-api/net","docId":"interacting-with-nethermind/json-rpc-api/net"},{"type":"link","label":"parity","href":"/docs/interacting-with-nethermind/json-rpc-api/parity","docId":"interacting-with-nethermind/json-rpc-api/parity"},{"type":"link","label":"personal","href":"/docs/interacting-with-nethermind/json-rpc-api/personal","docId":"interacting-with-nethermind/json-rpc-api/personal"},{"type":"link","label":"proof","href":"/docs/interacting-with-nethermind/json-rpc-api/proof","docId":"interacting-with-nethermind/json-rpc-api/proof"},{"type":"link","label":"rpc","href":"/docs/interacting-with-nethermind/json-rpc-api/rpc","docId":"interacting-with-nethermind/json-rpc-api/rpc"},{"type":"link","label":"Subscribe module","href":"/docs/interacting-with-nethermind/json-rpc-api/subscribe","docId":"interacting-with-nethermind/json-rpc-api/subscribe"},{"type":"link","label":"trace","href":"/docs/interacting-with-nethermind/json-rpc-api/trace","docId":"interacting-with-nethermind/json-rpc-api/trace"},{"type":"link","label":"txpool","href":"/docs/interacting-with-nethermind/json-rpc-api/txpool","docId":"interacting-with-nethermind/json-rpc-api/txpool"},{"type":"link","label":"web3","href":"/docs/interacting-with-nethermind/json-rpc-api/web3","docId":"interacting-with-nethermind/json-rpc-api/web3"},{"type":"link","label":"witness","href":"/docs/interacting-with-nethermind/json-rpc-api/witness","docId":"interacting-with-nethermind/json-rpc-api/witness"}],"href":"/docs/interacting-with-nethermind/json-rpc-api/"}],"href":"/docs/category/interacting-with-nethermind"},{"type":"category","label":"Monitoring","collapsible":true,"collapsed":true,"customProps":{"description":"General overview and introduction of Nethermind Execution Client"},"items":[{"type":"category","label":"Metrics","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"AccountAbstraction","href":"/docs/monitoring/metrics-explanation/accountabstraction","docId":"monitoring/metrics-explanation/accountabstraction"},{"type":"link","label":"AccountAbstraction.Network","href":"/docs/monitoring/metrics-explanation/accountabstraction.network","docId":"monitoring/metrics-explanation/accountabstraction.network"},{"type":"link","label":"Blockchain","href":"/docs/monitoring/metrics-explanation/blockchain","docId":"monitoring/metrics-explanation/blockchain"},{"type":"link","label":"Consensus.AuRa","href":"/docs/monitoring/metrics-explanation/consensus.aura","docId":"monitoring/metrics-explanation/consensus.aura"},{"type":"link","label":"Db","href":"/docs/monitoring/metrics-explanation/db","docId":"monitoring/metrics-explanation/db"},{"type":"link","label":"Using dotnet-counters","href":"/docs/monitoring/metrics-explanation/dotnet-counters","docId":"monitoring/metrics-explanation/dotnet-counters"},{"type":"link","label":"Evm","href":"/docs/monitoring/metrics-explanation/evm","docId":"monitoring/metrics-explanation/evm"},{"type":"link","label":"Init","href":"/docs/monitoring/metrics-explanation/init","docId":"monitoring/metrics-explanation/init"},{"type":"link","label":"JsonRpc","href":"/docs/monitoring/metrics-explanation/jsonrpc","docId":"monitoring/metrics-explanation/jsonrpc"},{"type":"link","label":"Merge.Plugin","href":"/docs/monitoring/metrics-explanation/merge.plugin","docId":"monitoring/metrics-explanation/merge.plugin"},{"type":"link","label":"Mev","href":"/docs/monitoring/metrics-explanation/mev","docId":"monitoring/metrics-explanation/mev"},{"type":"link","label":"Network","href":"/docs/monitoring/metrics-explanation/network","docId":"monitoring/metrics-explanation/network"},{"type":"link","label":"Runner module","href":"/docs/monitoring/metrics-explanation/runner","docId":"monitoring/metrics-explanation/runner"},{"type":"link","label":"Setting up local Metrics infrastructure","href":"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture","docId":"monitoring/metrics-explanation/setting-up-local-metrics-infrastracture"},{"type":"link","label":"Store module","href":"/docs/monitoring/metrics-explanation/store","docId":"monitoring/metrics-explanation/store"},{"type":"link","label":"Trie","href":"/docs/monitoring/metrics-explanation/trie","docId":"monitoring/metrics-explanation/trie"},{"type":"link","label":"Trie.Pruning","href":"/docs/monitoring/metrics-explanation/trie.pruning","docId":"monitoring/metrics-explanation/trie.pruning"},{"type":"link","label":"TxPool","href":"/docs/monitoring/metrics-explanation/txpool","docId":"monitoring/metrics-explanation/txpool"}],"href":"/docs/monitoring/metrics-explanation/"},{"type":"link","label":"Monitoring Node\'s Health","href":"/docs/monitoring/monitoring-node-health","docId":"monitoring/monitoring-node-health"}],"href":"/docs/category/monitoring"},{"type":"category","label":"For Developers","collapsible":true,"collapsed":true,"customProps":{"description":"General overview and introduction of Nethermind Execution Client"},"items":[{"type":"link","label":"Building from source","href":"/docs/for-developers/building-nethermind","docId":"for-developers/building-nethermind"},{"type":"link","label":"Coding Style","href":"/docs/for-developers/coding-style","docId":"for-developers/coding-style"},{"type":"link","label":"Custom Analytic Tools","href":"/docs/for-developers/custom-analytic-tools","docId":"for-developers/custom-analytic-tools"},{"type":"link","label":"Plugins","href":"/docs/for-developers/plugins","docId":"for-developers/plugins"},{"type":"link","label":"Web3.py","href":"/docs/for-developers/web3.py","docId":"for-developers/web3.py"}],"href":"/docs/category/for-developers"},{"type":"category","label":"Nethermind Utilities","collapsible":true,"collapsed":true,"customProps":{"description":"General overview and introduction of Nethermind Execution Client"},"items":[{"type":"category","label":"CLI","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"admin","href":"/docs/nethermind-utilities/cli/admin","docId":"nethermind-utilities/cli/admin"},{"type":"link","label":"clique","href":"/docs/nethermind-utilities/cli/clique","docId":"nethermind-utilities/cli/clique"},{"type":"link","label":"debug","href":"/docs/nethermind-utilities/cli/debug","docId":"nethermind-utilities/cli/debug"},{"type":"link","label":"diag","href":"/docs/nethermind-utilities/cli/diag","docId":"nethermind-utilities/cli/diag"},{"type":"link","label":"eth","href":"/docs/nethermind-utilities/cli/eth","docId":"nethermind-utilities/cli/eth"},{"type":"link","label":"net","href":"/docs/nethermind-utilities/cli/net","docId":"nethermind-utilities/cli/net"},{"type":"link","label":"node","href":"/docs/nethermind-utilities/cli/node","docId":"nethermind-utilities/cli/node"},{"type":"link","label":"parity","href":"/docs/nethermind-utilities/cli/parity","docId":"nethermind-utilities/cli/parity"},{"type":"link","label":"personal","href":"/docs/nethermind-utilities/cli/personal","docId":"nethermind-utilities/cli/personal"},{"type":"link","label":"proof","href":"/docs/nethermind-utilities/cli/proof","docId":"nethermind-utilities/cli/proof"},{"type":"link","label":"system","href":"/docs/nethermind-utilities/cli/system","docId":"nethermind-utilities/cli/system"},{"type":"link","label":"trace","href":"/docs/nethermind-utilities/cli/trace","docId":"nethermind-utilities/cli/trace"},{"type":"link","label":"txpool","href":"/docs/nethermind-utilities/cli/txpool","docId":"nethermind-utilities/cli/txpool"},{"type":"link","label":"web3","href":"/docs/nethermind-utilities/cli/web3","docId":"nethermind-utilities/cli/web3"}],"href":"/docs/nethermind-utilities/cli/"},{"type":"link","label":"Pipeline","href":"/docs/nethermind-utilities/pipeline","docId":"nethermind-utilities/pipeline"}],"href":"/docs/category/nethermind-utilities"},{"type":"category","label":"Resources","collapsible":true,"collapsed":true,"customProps":{"description":"General overview and introduction of Nethermind Execution Client"},"items":[{"type":"link","label":"Connecting Wallet","href":"/docs/resources/connecting-wallet","docId":"resources/connecting-wallet"},{"type":"link","label":"FAQ","href":"/docs/resources/faq","docId":"resources/faq"},{"type":"link","label":"Firewall Configuration","href":"/docs/resources/firewall-configuration","docId":"resources/firewall-configuration"},{"type":"category","label":"guides-and-helpers","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Deploy Nethermind with Monitoring stack","href":"/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack","docId":"resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack"},{"type":"link","label":"ETH2 <-> Nethermind","href":"/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind","docId":"resources/guides-and-helpers/eth2-less-than-greater-than-nethermind"},{"type":"link","label":"ETH2 <-> Nethermind","href":"/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind","docId":"resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind"},{"type":"category","label":"validator-setup","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Aura Validator","href":"/docs/resources/guides-and-helpers/validator-setup/aura-validator","docId":"resources/guides-and-helpers/validator-setup/aura-validator"},{"type":"link","label":"Eth2 Validator","href":"/docs/resources/guides-and-helpers/validator-setup/eth2-validator","docId":"resources/guides-and-helpers/validator-setup/eth2-validator"}]}]},{"type":"link","label":"Known Issues","href":"/docs/resources/know-issues","docId":"resources/know-issues"}],"href":"/docs/category/resources"},{"type":"category","label":"Contact Us","collapsible":true,"collapsed":true,"customProps":{"description":"General overview and introduction of Nethermind Execution Client"},"items":[{"type":"link","label":"Contact Us","href":"/docs/contact/","docId":"contact/README"}],"href":"/docs/category/contact-us"},{"type":"link","label":"Welcome to Nethermind","href":"/docs/","docId":"README"}]},"docs":{"contact/README":{"id":"contact/README","title":"Contact us","description":"E-mails","sidebar":"tutorialSidebar"},"for-developers/building-nethermind":{"id":"for-developers/building-nethermind","title":"Building from source","description":"The Nethermind\'s source code can be obtained from our repository on","sidebar":"tutorialSidebar"},"for-developers/coding-style":{"id":"for-developers/coding-style","title":"Coding Style","description":"Nethermind C# Coding Style","sidebar":"tutorialSidebar"},"for-developers/custom-analytic-tools":{"id":"for-developers/custom-analytic-tools","title":"Custom Analytic Tools","description":"Check plugins for some easy addition of analytical tools","sidebar":"tutorialSidebar"},"for-developers/plugins":{"id":"for-developers/plugins","title":"Plugins","description":"Nethermind plugins is a powerful way of extending your local node capabilities.","sidebar":"tutorialSidebar"},"for-developers/web3.py":{"id":"for-developers/web3.py","title":"Web3.py","description":"It is possible to connect to the Nethermind node using web3.py (python web3.js implementation). You will need to","sidebar":"tutorialSidebar"},"fundamentals/configuration/accountabstraction":{"id":"fundamentals/configuration/accountabstraction","title":"AccountAbstraction","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/aura":{"id":"fundamentals/configuration/aura","title":"Aura","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/auramerge":{"id":"fundamentals/configuration/auramerge","title":"AuRaMerge","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/blocks":{"id":"fundamentals/configuration/blocks","title":"Blocks","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/bloom":{"id":"fundamentals/configuration/bloom","title":"Bloom","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/ethstats":{"id":"fundamentals/configuration/ethstats","title":"EthStats","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/healthchecks":{"id":"fundamentals/configuration/healthchecks","title":"HealthChecks","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/hive":{"id":"fundamentals/configuration/hive","title":"Hive","description":"These items need only be set when testing with Hive (Ethereum Foundation tool)","sidebar":"tutorialSidebar"},"fundamentals/configuration/init":{"id":"fundamentals/configuration/init","title":"Init","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/jsonrpc":{"id":"fundamentals/configuration/jsonrpc","title":"JsonRpc","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/keystore":{"id":"fundamentals/configuration/keystore","title":"KeyStore","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/merge":{"id":"fundamentals/configuration/merge","title":"Merge","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/metrics":{"id":"fundamentals/configuration/metrics","title":"Metrics","description":"Configuration of the metrics provided by a Nethermind node for both, the Prometheus and the dotnet-counters.","sidebar":"tutorialSidebar"},"fundamentals/configuration/mev":{"id":"fundamentals/configuration/mev","title":"Mev","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/mining":{"id":"fundamentals/configuration/mining","title":"Mining","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/network":{"id":"fundamentals/configuration/network","title":"Network","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/plugin":{"id":"fundamentals/configuration/plugin","title":"Plugin","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/pruning":{"id":"fundamentals/configuration/pruning","title":"Pruning","description":"Configuration of the pruning parameters (pruning is the process of removing some of the intermediary state nodes - it","sidebar":"tutorialSidebar"},"fundamentals/configuration/README":{"id":"fundamentals/configuration/README","title":"Configuration","description":"A list of properties to adjust Nethermind Node 04-configuration","sidebar":"tutorialSidebar"},"fundamentals/configuration/receipt":{"id":"fundamentals/configuration/receipt","title":"Receipt","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/sample-configuration":{"id":"fundamentals/configuration/sample-configuration","title":"Sample configuration","description":"<Tabs defaultValue=\\"mainnet\\" values={[","sidebar":"tutorialSidebar"},"fundamentals/configuration/seq":{"id":"fundamentals/configuration/seq","title":"Seq","description":"Configuration of the Prometheus + Grafana metrics publication. Documentation of the required setup is not yet ready (but","sidebar":"tutorialSidebar"},"fundamentals/configuration/sync":{"id":"fundamentals/configuration/sync","title":"Sync","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/tracestore":{"id":"fundamentals/configuration/tracestore","title":"TraceStore","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/txpool":{"id":"fundamentals/configuration/txpool","title":"TxPool","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/configuration/wallet":{"id":"fundamentals/configuration/wallet","title":"Wallet","description":"| Property | Env Variable | Description | Default |","sidebar":"tutorialSidebar"},"fundamentals/database":{"id":"fundamentals/database","title":"Database","description":"dbpath and databases info","sidebar":"tutorialSidebar"},"fundamentals/how-to-reduce-database-size/full-pruning":{"id":"fundamentals/how-to-reduce-database-size/full-pruning","title":"Full Pruning","description":"Explanation of Full Pruning, including its requirements and steps to execute it.","sidebar":"tutorialSidebar"},"fundamentals/how-to-reduce-database-size/README":{"id":"fundamentals/how-to-reduce-database-size/README","title":"How to reduce database size","description":"Description of all possible options, their pros and cons","sidebar":"tutorialSidebar"},"fundamentals/how-to-reduce-database-size/resync-database-from-scratch":{"id":"fundamentals/how-to-reduce-database-size/resync-database-from-scratch","title":"Resync database from scratch","description":"How to resync your Nethermind node","sidebar":"tutorialSidebar"},"fundamentals/logs/logging-configuration":{"id":"fundamentals/logs/logging-configuration","title":"Logging Configuration","description":"Log config file location","sidebar":"tutorialSidebar"},"fundamentals/logs/logs":{"id":"fundamentals/logs/logs","title":"Explaining Nethermind logs","description":"A quick start example for G\xf6rli Testnet Nethermind synchronization","sidebar":"tutorialSidebar"},"fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain":{"id":"fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain","title":"How to setup a Nethermind only Clique based chain","description":"Set of validators sealing blocks on private clique network","sidebar":"tutorialSidebar"},"fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain":{"id":"fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain","title":"How to setup a Nethermind only Spaceneth based chain","description":"Spaceneth private network setup looks very similar to the above Clique setup. However, there are few major differences and will be described below.","sidebar":"tutorialSidebar"},"fundamentals/private-networks/README":{"id":"fundamentals/private-networks/README","title":"Private Networks","description":"Private networks of Nethermind Client","sidebar":"tutorialSidebar"},"fundamentals/running-nethermind-post-merge":{"id":"fundamentals/running-nethermind-post-merge","title":"Running Nethermind & CL","description":"Introduction","sidebar":"tutorialSidebar"},"fundamentals/running-nethermind/running-the-client":{"id":"fundamentals/running-nethermind/running-the-client","title":"Running the client","description":"To get the latest Nethermind version,","sidebar":"tutorialSidebar"},"fundamentals/running-nethermind/runtime":{"id":"fundamentals/running-nethermind/runtime","title":"Runtime","description":"Directories","sidebar":"tutorialSidebar"},"fundamentals/security":{"id":"fundamentals/security","title":"Security","description":"Security measures that should be taken before running Nethermind Node on Ethereum Mainnet","sidebar":"tutorialSidebar"},"fundamentals/sync-modes":{"id":"fundamentals/sync-modes","title":"Sync modes","description":"There are three main synchronization modes","sidebar":"tutorialSidebar"},"getting-started/installing-nethermind":{"id":"getting-started/installing-nethermind","title":"Installing Nethermind","description":"Nethermind official releases can be downloaded from the following sources:","sidebar":"tutorialSidebar"},"getting-started/manage-nethermind-with-systemd":{"id":"getting-started/manage-nethermind-with-systemd","title":"Manage Nethermind with systemd","description":"Create a new user","sidebar":"tutorialSidebar"},"getting-started/migrating-from-geth":{"id":"getting-started/migrating-from-geth","title":"Migrating From Geth","description":"To migrate from Geth to Nethermind there are few conditions which should be met to ensure seamless and quick transition.","sidebar":"tutorialSidebar"},"getting-started/networks":{"id":"getting-started/networks","title":"Networks","description":"Networks currently supported by Nethermind Client","sidebar":"tutorialSidebar"},"getting-started/system-requirements":{"id":"getting-started/system-requirements","title":"System Requirements","description":"Run Nethermind on a platform of your choice","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/admin":{"id":"interacting-with-nethermind/json-rpc-api/admin","title":"admin","description":"admin_addPeer","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/clique":{"id":"interacting-with-nethermind/json-rpc-api/clique","title":"clique","description":"clique_discard","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/debug":{"id":"interacting-with-nethermind/json-rpc-api/debug","title":"debug","description":"debug_deleteChainSlice","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example":{"id":"interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example","title":"Engine JsonRpc Config Example","description":"In this page we will layout an example configuration for the JsonRpc module.","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/eth":{"id":"interacting-with-nethermind/json-rpc-api/eth","title":"eth","description":"eth_blockNumber","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/evm":{"id":"interacting-with-nethermind/json-rpc-api/evm","title":"evm","description":"evm_mine","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/net":{"id":"interacting-with-nethermind/json-rpc-api/net","title":"net","description":"net_listening","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/parity":{"id":"interacting-with-nethermind/json-rpc-api/parity","title":"parity","description":"parity_clearEngineSigner","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/personal":{"id":"interacting-with-nethermind/json-rpc-api/personal","title":"personal","description":"personal_importRawKey","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/proof":{"id":"interacting-with-nethermind/json-rpc-api/proof","title":"proof","description":"proof_getTransactionByHash","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/README":{"id":"interacting-with-nethermind/json-rpc-api/README","title":"JSON RPC","description":"JSON RPC is available via HTTP and WS.","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/rpc":{"id":"interacting-with-nethermind/json-rpc-api/rpc","title":"rpc","description":"rpc_modules","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/subscribe":{"id":"interacting-with-nethermind/json-rpc-api/subscribe","title":"Subscribe module","description":"eth\\\\_subscribe","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/trace":{"id":"interacting-with-nethermind/json-rpc-api/trace","title":"trace","description":"trace_block","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/txpool":{"id":"interacting-with-nethermind/json-rpc-api/txpool","title":"txpool","description":"txpool_content","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/web3":{"id":"interacting-with-nethermind/json-rpc-api/web3","title":"web3","description":"web3_clientVersion","sidebar":"tutorialSidebar"},"interacting-with-nethermind/json-rpc-api/witness":{"id":"interacting-with-nethermind/json-rpc-api/witness","title":"witness","description":"witness_witnesses","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/accountabstraction":{"id":"monitoring/metrics-explanation/accountabstraction","title":"AccountAbstraction","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/accountabstraction.network":{"id":"monitoring/metrics-explanation/accountabstraction.network","title":"AccountAbstraction.Network","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/blockchain":{"id":"monitoring/metrics-explanation/blockchain","title":"Blockchain","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/consensus.aura":{"id":"monitoring/metrics-explanation/consensus.aura","title":"Consensus.AuRa","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/db":{"id":"monitoring/metrics-explanation/db","title":"Db","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/dotnet-counters":{"id":"monitoring/metrics-explanation/dotnet-counters","title":"Using dotnet-counters","description":"How to use System.Diagnostics.Metrics and dotnet-counters to measure and observe a Nethermind node","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/evm":{"id":"monitoring/metrics-explanation/evm","title":"Evm","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/init":{"id":"monitoring/metrics-explanation/init","title":"Init","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/jsonrpc":{"id":"monitoring/metrics-explanation/jsonrpc","title":"JsonRpc","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/merge.plugin":{"id":"monitoring/metrics-explanation/merge.plugin","title":"Merge.Plugin","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/mev":{"id":"monitoring/metrics-explanation/mev","title":"Mev","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/network":{"id":"monitoring/metrics-explanation/network","title":"Network","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/README":{"id":"monitoring/metrics-explanation/README","title":"Metrics","description":"Monitoring and collecting metrics-explanation from","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/runner":{"id":"monitoring/metrics-explanation/runner","title":"Runner module","description":"| Metric Name | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/setting-up-local-metrics-infrastracture":{"id":"monitoring/metrics-explanation/setting-up-local-metrics-infrastracture","title":"Setting up local Metrics infrastructure","description":"Metrics then can be used to monitor your running Nethermind nodes","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/store":{"id":"monitoring/metrics-explanation/store","title":"Store module","description":"| Metric Name | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/trie":{"id":"monitoring/metrics-explanation/trie","title":"Trie","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/trie.pruning":{"id":"monitoring/metrics-explanation/trie.pruning","title":"Trie.Pruning","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/metrics-explanation/txpool":{"id":"monitoring/metrics-explanation/txpool","title":"TxPool","description":"| Metric | Description |","sidebar":"tutorialSidebar"},"monitoring/monitoring-node-health":{"id":"monitoring/monitoring-node-health","title":"Monitoring Node\'s Health","description":"Nethermind has a pre-packed Nethermind.HealthChecks.dll plugin that allows you to monitor your Nethermind node better.","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/admin":{"id":"nethermind-utilities/cli/admin","title":"admin","description":"admin.addPeer","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/clique":{"id":"nethermind-utilities/cli/clique","title":"clique","description":"clique.discard","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/debug":{"id":"nethermind-utilities/cli/debug","title":"debug","description":"debug.config","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/diag":{"id":"nethermind-utilities/cli/diag","title":"diag","description":"diag.cliVersion","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/eth":{"id":"nethermind-utilities/cli/eth","title":"eth","description":"eth.blockNumber","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/net":{"id":"nethermind-utilities/cli/net","title":"net","description":"net.localEnode","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/node":{"id":"nethermind-utilities/cli/node","title":"node","description":"node.address","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/parity":{"id":"nethermind-utilities/cli/parity","title":"parity","description":"parity.clearEngineSigner","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/personal":{"id":"nethermind-utilities/cli/personal","title":"personal","description":"personal.importRawKey","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/proof":{"id":"nethermind-utilities/cli/proof","title":"proof","description":"proof.getTransactionByHash","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/README":{"id":"nethermind-utilities/cli/README","title":"CLI","description":"Guide for Nethermind.Cli project which is useful for managing your node","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/system":{"id":"nethermind-utilities/cli/system","title":"system","description":"system.getVariable","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/trace":{"id":"nethermind-utilities/cli/trace","title":"trace","description":"trace.block","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/txpool":{"id":"nethermind-utilities/cli/txpool","title":"txpool","description":"txpool.content","sidebar":"tutorialSidebar"},"nethermind-utilities/cli/web3":{"id":"nethermind-utilities/cli/web3","title":"web3","description":"web3.abi","sidebar":"tutorialSidebar"},"nethermind-utilities/pipeline":{"id":"nethermind-utilities/pipeline","title":"Pipeline","description":"Pipelines were added to the Nethermind code base in order to make building plugins around blockchain analysis faster and easier.","sidebar":"tutorialSidebar"},"README":{"id":"README","title":"Welcome to Nethermind","description":"Welcome to the Nethermind Client documentation! Nethermind is a leading provider of Ethereum solutions for developers","sidebar":"tutorialSidebar"},"resources/connecting-wallet":{"id":"resources/connecting-wallet","title":"Connecting Wallet","description":"You can connect to the node from Metamask by selecting localhost:8545 from the Metamask network list.","sidebar":"tutorialSidebar"},"resources/faq":{"id":"resources/faq","title":"FAQ","description":"How do I upgrade my node?","sidebar":"tutorialSidebar"},"resources/firewall-configuration":{"id":"resources/firewall-configuration","title":"Firewall Configuration","description":"Rules that should be added to your machine\'s firewall","sidebar":"tutorialSidebar"},"resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack":{"id":"resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack","title":"Deploy Nethermind with Monitoring stack","description":"Recipe for a fast and easy terraform deployment of Nethermind Client and Monitoring stack (Grafana/Prometheus/Seq)","sidebar":"tutorialSidebar"},"resources/guides-and-helpers/eth2-less-than-greater-than-nethermind":{"id":"resources/guides-and-helpers/eth2-less-than-greater-than-nethermind","title":"ETH2 <-> Nethermind","description":"How to run Nethermind as your ETH1 endpoint for ETH2 clients","sidebar":"tutorialSidebar"},"resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind":{"id":"resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind","title":"ETH2 <-> Nethermind","description":"How to run Nethermind as your ETH1 endpoint for ETH2 clients","sidebar":"tutorialSidebar"},"resources/guides-and-helpers/validator-setup/aura-validator":{"id":"resources/guides-and-helpers/validator-setup/aura-validator","title":"Aura Validator","description":"How to setup a Nethermind Validator in Aura (Authority Round) consensus algorithm","sidebar":"tutorialSidebar"},"resources/guides-and-helpers/validator-setup/eth2-validator":{"id":"resources/guides-and-helpers/validator-setup/eth2-validator","title":"Eth2 Validator","description":"Introduction","sidebar":"tutorialSidebar"},"resources/know-issues":{"id":"resources/know-issues","title":"Known Issues","description":"There are several known issues with the current version of Nethermind","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/94ffc943.4f47b553.js b/assets/js/94ffc943.4f47b553.js new file mode 100644 index 000000000..3637e329f --- /dev/null +++ b/assets/js/94ffc943.4f47b553.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4933],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>h});var a=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,a,o=function(e,n){if(null==e)return{};var t,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=a.createContext({}),d=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},c=function(e){var n=d(e.components);return a.createElement(l.Provider,{value:n},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(t),u=o,h=p["".concat(l,".").concat(u)]||p[u]||m[u]||r;return t?a.createElement(h,i(i({ref:n},c),{},{components:t})):a.createElement(h,i({ref:n},c))}));function h(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,i=new Array(r);i[0]=u;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[p]="string"==typeof e?e:o,i[1]=s;for(var d=2;d<r;d++)i[d]=t[d];return a.createElement.apply(null,i)}return a.createElement.apply(null,t)}u.displayName="MDXCreateElement"},72:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>s,toc:()=>d});var a=t(7462),o=(t(7294),t(3905));const r={},i="How to setup a Nethermind only Spaceneth based chain",s={unversionedId:"fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain",id:"fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain",title:"How to setup a Nethermind only Spaceneth based chain",description:"Spaceneth private network setup looks very similar to the above Clique setup. However, there are few major differences and will be described below.",source:"@site/docs/02-fundamentals/09-private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain.md",sourceDirName:"02-fundamentals/09-private-networks",slug:"/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain",permalink:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/09-private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"How to setup a Nethermind only Clique based chain",permalink:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain"},next:{title:"Running Nethermind & CL",permalink:"/docs/fundamentals/running-nethermind-post-merge"}},l={},d=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Setup",id:"setup",level:2}],c={toc:d},p="wrapper";function m(e){let{components:n,...t}=e;return(0,o.kt)(p,(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"how-to-setup-a-nethermind-only-spaceneth-based-chain"},"How to setup a Nethermind only Spaceneth based chain"),(0,o.kt)("p",null,"Spaceneth private network setup looks very similar to the above Clique setup. However, there are few major differences and will be described below."),(0,o.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Linux bash shell"),(0,o.kt)("li",{parentName:"ul"},"Docker-compose"),(0,o.kt)("li",{parentName:"ul"},"Docker"),(0,o.kt)("li",{parentName:"ul"},"jq"),(0,o.kt)("li",{parentName:"ul"},"Nethermind.Cli")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt-get install -y docker-compose docker.io jq\n")),(0,o.kt)("h2",{id:"setup"},"Setup"),(0,o.kt)("p",null,"In this setup we will create a private network of 3 Nethermind nodes running a simple testing NethDev consensus algorithm."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"create separate directory where we will store all files")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-text"},"mkdir private-networking\ncd private-networking\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"create folders for each node and genesis")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-text"},"mkdir node_1 node_2 node_3 genesis\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"download ",(0,o.kt)("a",{parentName:"li",href:"https://raw.githubusercontent.com/NethermindEth/nethermind/master/src/Nethermind/Chains/spaceneth.json"},"chainspec")," file with spaceneth engine and place it in ",(0,o.kt)("inlineCode",{parentName:"li"},"genesis")," folder.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"wget https://raw.githubusercontent.com/NethermindEth/nethermind/master/src/Nethermind/Chains/spaceneth.json\ncp spaceneth.json genesis/spaceneth.json\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"create subfolders in each node folder")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"mkdir node_1/configs node_1/staticNodes node_2/configs node_2/staticNodes node_3/configs node_3/staticNodes\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"create a ",(0,o.kt)("inlineCode",{parentName:"li"},"static-nodes.json")," file and place it in ",(0,o.kt)("inlineCode",{parentName:"li"},"node_1/staticNodes")," subfolders ","(","do this for node","_","2 and node","_","3 as well",")")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cat <<EOF > node_1/staticNodes/static-nodes.json\n[\n\n]\nEOF\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"create ",(0,o.kt)("inlineCode",{parentName:"li"},"config.cfg")," file and place it in ",(0,o.kt)("inlineCode",{parentName:"li"},"node_1/configs")," subfolders ","(","do this for node","_","2 and node","_","3 as well",")")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'cat <<EOF > node_1/configs/config.cfg\n{\n "Init": {\n "WebSocketsEnabled": false,\n "StoreReceipts" : true,\n "EnableUnsecuredDevWallet": true,\n "IsMining": true,\n "ChainSpecPath": "/config/genesis/spaceneth.json",\n "BaseDbPath": "nethermind_db/spaceneth",\n "LogFileName": "spaceneth.logs.txt",\n "StaticNodesPath": "Data/static-nodes.json"\n },\n "Network": {\n "DiscoveryPort": 30300,\n "P2PPort": 30300,\n "LocalIp": "10.5.0.2",\n "ExternalIp": "10.5.0.2"\n },\n "JsonRpc": {\n "Enabled": true,\n "Host": "10.5.0.2",\n "Port": 8545\n }\n}\nEOF\n')),(0,o.kt)("p",null,"For each node you will need to change following items in configuration:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"LocalIp"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"ExternalIp")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"Host")," should have the same value and be incremented for each node e.g. 10.5.0.3, 10.5.0.4 and so on and so forth.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://nethermind.readthedocs.io/en/latest/_images/configs-spaceneth.png",alt:null})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"copy ",(0,o.kt)("inlineCode",{parentName:"li"},"docker-compose")," file and place it in working directory")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},'version: "3.5"\nservices:\n\n node_1:\n image: nethermind/nethermind\n command: --config config\n volumes:\n - ./genesis:/config/genesis\n - ./node_1/configs/config.cfg:/nethermind/configs/config.cfg\n - ./node_1/staticNodes/static-nodes.json:/nethermind/Data/static-nodes.json\n - ./node_1/db/spaceneth:/nethermind/nethermind_db/spaceneth\n - ./node_1/keystore:/nethermind/keystore\n ports:\n - 0.0.0.0:8547:8545\n networks:\n vpcbr:\n ipv4_address: 10.5.0.2\n\n node_2:\n image: nethermind/nethermind\n command: --config config\n volumes:\n - ./genesis:/config/genesis\n - ./node_2/configs/config.cfg:/nethermind/configs/config.cfg\n - ./node_2/staticNodes/static-nodes.json:/nethermind/Data/static-nodes.json\n - ./node_2/db/spaceneth:/nethermind/nethermind_db/spaceneth\n - ./node_2/keystore:/nethermind/keystore\n ports:\n - 0.0.0.0:8548:8545\n networks:\n vpcbr:\n ipv4_address: 10.5.0.3\n\n node_3:\n image: nethermind/nethermind\n command: --config config\n volumes:\n - ./genesis:/config/genesis\n - ./node_3/configs/config.cfg:/nethermind/configs/config.cfg\n - ./node_3/staticNodes/static-nodes.json:/nethermind/Data/static-nodes.json\n - ./node_3/db/spaceneth:/nethermind/nethermind_db/spaceneth\n - ./node_3/keystore:/nethermind/keystore\n ports:\n - 0.0.0.0:8549:8545\n networks:\n vpcbr:\n ipv4_address: 10.5.0.4\n\nnetworks:\n vpcbr:\n driver: bridge\n ipam:\n config:\n - subnet: 10.5.0.0/16\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"run each node separately so that we can copy ",(0,o.kt)("inlineCode",{parentName:"li"},"Enode")," for each node, we will use them later")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose run node_1\n")),(0,o.kt)("p",null,"Stop the node when Nethermind initialization completes ",(0,o.kt)("inlineCode",{parentName:"p"},"Ctrl +C"),". Copy ",(0,o.kt)("inlineCode",{parentName:"p"},"This node")," values to a text file. Continue with node","_","2 and node","_","3."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://nethermind.readthedocs.io/en/latest/_images/initialization-spaceneth.png",alt:null})),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"You can use ",(0,o.kt)("inlineCode",{parentName:"p"},"Nethermind.Cli")," to fetch these values from nodes by executing the following.",(0,o.kt)("br",{parentName:"p"}),"\n",(0,o.kt)("inlineCode",{parentName:"p"},"Nethermind.Cli")," can be found in packages on ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind/releases"},"Github Releases")," or ",(0,o.kt)("a",{parentName:"p",href:"http://downloads.nethermind.io/"},"Download Page"),".")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'node.switch("http://localhost:8547")\nnode.enode\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"the file should look similar to this:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'STATIC_NODE_1="enode://2281549869465d98e90cebc45e1d6834a01465a990add7bcf07a49287e7e66b50ca27f9c70a46190cef7ad746dd5d5b6b9dfee0c9954104c8e9bd0d42758ec58@10.5.0.2:30300"\nSTATIC_NODE_2="enode://37878ec16a5ed87c9c80b4648e5428f5c768eddd79483be118319c49d11c4e535dac328b5216696cefe0792b7b64adc4de3aeb377550651e982590e62e5a500e@10.5.0.3:30300"\nSTATIC_NODE_3="enode://6067f06d84c207e6233dacf1f3ef961bd7231f71d5425cbaf843cf19cfd5f7e13b024d234e4e5f6175bdb37c0bbccd14488b481b2280efb66d0631a20ae13ea3@10.5.0.4:30300"\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"copy & paste above variables into your terminal"),(0,o.kt)("li",{parentName:"ul"},"for each node modify previously created empty ",(0,o.kt)("inlineCode",{parentName:"li"},"static-nodes.json")," files by appending ",(0,o.kt)("inlineCode",{parentName:"li"},"Enodes")," to them")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'cat <<EOF > node_1/staticNodes/static-nodes.json\n[\n "$STATIC_NODE_1",\n "$STATIC_NODE_2",\n "$STATIC_NODE_3"\n]\nEOF\n')),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://nethermind.readthedocs.io/en/latest/_images/staticNodes-spaceneth.png",alt:null})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"remove databases for each node")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"sudo rm -rf node_1/db/spaceneth node_2/db/spaceneth node_3/db/spaceneth\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"run ",(0,o.kt)("inlineCode",{parentName:"li"},"docker-compose")," file")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-text"},"docker-compose up\n")),(0,o.kt)("p",null,"You should see the private network working. We now need to send transactions in order to start producing blocks."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"run ",(0,o.kt)("inlineCode",{parentName:"li"},"Nethermind.Cli")),(0,o.kt)("li",{parentName:"ul"},"run ",(0,o.kt)("inlineCode",{parentName:"li"},'node.switch("http://localhost:8547")')),(0,o.kt)("li",{parentName:"ul"},"run ",(0,o.kt)("inlineCode",{parentName:"li"},"personal.listAccounts")),(0,o.kt)("li",{parentName:"ul"},"create new account ",(0,o.kt)("inlineCode",{parentName:"li"},'personal.newAccount("test")'))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://nethermind.readthedocs.io/en/latest/_images/cli-spaceneth.png",alt:null})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"re-run ",(0,o.kt)("inlineCode",{parentName:"li"},"personal.listAccounts")," and copy your account address"),(0,o.kt)("li",{parentName:"ul"},"trigger blocks producing by sending transaction using ",(0,o.kt)("inlineCode",{parentName:"li"},"eth_sendTransaction"),"JSON RPC method or ",(0,o.kt)("inlineCode",{parentName:"li"},"Nethermind.Cli"),". Change ",(0,o.kt)("inlineCode",{parentName:"li"},"from")," property to your account address")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{\n "from": "0x89892f2c746d98cf270ff2a76672e493d9731c24",\n "to": "0xe1ab8145f7e55dc933d51a18c793f901a3a0b276",\n "gas": "0x76c0",\n "gasPrice": "0x9184e72a000",\n "value": "0x9184e72a",\n "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"\n}],"id":0}\' -H "Content-Type: application/json" -X POST localhost:8547\n')),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://nethermind.readthedocs.io/en/latest/_images/finalization-spaceneth.png",alt:null})))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/969befe5.4f6d2f45.js b/assets/js/969befe5.4f6d2f45.js new file mode 100644 index 000000000..a9b6dd599 --- /dev/null +++ b/assets/js/969befe5.4f6d2f45.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6225],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>b});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 l(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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),s=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(u.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(r),m=a,b=d["".concat(u,".").concat(m)]||d[m]||p[m]||l;return r?n.createElement(b,i(i({ref:t},c),{},{components:r})):n.createElement(b,i({ref:t},c))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,i=new Array(l);i[0]=m;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:a,i[1]=o;for(var s=2;s<l;s++)i[s]=r[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},5162:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(7294),a=r(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:r,className:i}=e;return n.createElement("div",{role:"tabpanel",className:(0,a.Z)(l.tabItem,i),hidden:r},t)}},4866:(e,t,r)=>{r.d(t,{Z:()=>N});var n=r(7462),a=r(7294),l=r(6010),i=r(2466),o=r(6550),u=r(1980),s=r(7392),c=r(12);function d(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}function p(e){const{values:t,children:r}=e;return(0,a.useMemo)((()=>{const e=t??d(r);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,r])}function m(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:r}=e;const n=(0,o.k6)(),l=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,u._X)(l),(0,a.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function f(e){const{defaultValue:t,queryString:r=!1,groupId:n}=e,l=p(e),[i,o]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:r}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[u,s]=b({queryString:r,groupId:n}),[d,f]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,c.Nk)(r);return[n,(0,a.useCallback)((e=>{r&&l.set(e)}),[r,l])]}({groupId:n}),h=(()=>{const e=u??d;return m({value:e,tabValues:l})?e:null})();(0,a.useLayoutEffect)((()=>{h&&o(h)}),[h]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);o(e),s(e),f(e)}),[s,f,l]),tabValues:l}}var h=r(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:r,selectedValue:o,selectValue:u,tabValues:s}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.o5)(),p=e=>{const t=e.currentTarget,r=c.indexOf(t),n=s[r].value;n!==o&&(d(t),u(n))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const r=c.indexOf(e.currentTarget)+1;t=c[r]??c[0];break}case"ArrowLeft":{const r=c.indexOf(e.currentTarget)-1;t=c[r]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":r},t)},s.map((e=>{let{value:t,label:r,attributes:i}=e;return a.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},i,{className:(0,l.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":o===t})}),r??t)})))}function v(e){let{lazy:t,children:r,selectedValue:n}=e;const l=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function k(e){const t=f(e);return a.createElement("div",{className:(0,l.Z)("tabs-container",g.tabList)},a.createElement(y,(0,n.Z)({},e,t)),a.createElement(v,(0,n.Z)({},e,t)))}function N(e){const t=(0,h.Z)();return a.createElement(k,(0,n.Z)({key:String(t)},e))}},2973:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>b,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var n=r(7462),a=(r(7294),r(3905)),l=r(4866),i=r(5162);const o={},u="diag",s={unversionedId:"nethermind-utilities/cli/diag",id:"nethermind-utilities/cli/diag",title:"diag",description:"diag.cliVersion",source:"@site/docs/06-nethermind-utilities/cli/diag.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/diag",permalink:"/docs/nethermind-utilities/cli/diag",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/diag.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"debug",permalink:"/docs/nethermind-utilities/cli/debug"},next:{title:"eth",permalink:"/docs/nethermind-utilities/cli/eth"}},c={},d=[{value:"diag.cliVersion",id:"diagcliversion",level:2}],p={toc:d},m="wrapper";function b(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"diag"},"diag"),(0,a.kt)("h2",{id:"diagcliversion"},"diag.cliVersion"),(0,a.kt)("p",null,"Displays client version"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"diag.cliVersion"))))),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"JavaScript Object")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Client version")))),(0,a.kt)(l.Z,{mdxType:"Tabs"},(0,a.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-yaml"},"diag.cliVersion\n"))),(0,a.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-yaml"},'"Nethermind.Cli, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"\n')))))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/96b60a33.ea57d786.js b/assets/js/96b60a33.ea57d786.js new file mode 100644 index 000000000..01e42d53e --- /dev/null +++ b/assets/js/96b60a33.ea57d786.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9842],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});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 o(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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=d(n),m=r,f=u["".concat(s,".").concat(m)]||u[m]||c[m]||o;return n?a.createElement(f,i(i({ref:t},p),{},{components:n})):a.createElement(f,i({ref:t},p))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var d=2;d<o;d++)i[d]=n[d];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},464:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var a=n(7462),r=(n(7294),n(3905));const o={description:"Description of all possible options, their pros and cons"},i="How to reduce database size",l={unversionedId:"fundamentals/how-to-reduce-database-size/README",id:"fundamentals/how-to-reduce-database-size/README",title:"How to reduce database size",description:"Description of all possible options, their pros and cons",source:"@site/docs/02-fundamentals/08-how-to-reduce-database-size/README.md",sourceDirName:"02-fundamentals/08-how-to-reduce-database-size",slug:"/fundamentals/how-to-reduce-database-size/",permalink:"/docs/fundamentals/how-to-reduce-database-size/",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/08-how-to-reduce-database-size/README.md",tags:[],version:"current",frontMatter:{description:"Description of all possible options, their pros and cons"},sidebar:"tutorialSidebar",previous:{title:"Database",permalink:"/docs/fundamentals/database"},next:{title:"Full Pruning",permalink:"/docs/fundamentals/how-to-reduce-database-size/full-pruning"}},s={},d=[],p={toc:d},u="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"how-to-reduce-database-size"},"How to reduce database size"),(0,r.kt)("p",null,"The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650\nGB. As a result, many node-setups are configured to run on 1TB disks. However, even with the application of settings\ndesigned to slow the growth rate, these disks may eventually run out of free space."),(0,r.kt)("p",null,"Current options to reduce db size are:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch"},"Re-sync database from scratch")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/fundamentals/how-to-reduce-database-size/full-pruning"},"Full pruning"))),(0,r.kt)("p",null,"The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was\nfetched from a node running on a machine with the below specifications:\\\n\\\n",(0,r.kt)("strong",{parentName:"p"},"Node Version"),": 1.18.0\\\n",(0,r.kt)("strong",{parentName:"p"},"Consensus Client"),": Lighthouse\\\n",(0,r.kt)("strong",{parentName:"p"},"CPU"),": AMD EPYC 7713 64-Core Processor (16 cores allocated for this VM)\\\n",(0,r.kt)("strong",{parentName:"p"},"RAM"),": 64GB\\\n",(0,r.kt)("strong",{parentName:"p"},"Disk Size"),": 1.2 TB\\\n",(0,r.kt)("strong",{parentName:"p"},"IOPS of the disk","*"),": 70,000 - 80,000 IOPS (results vary in this range)"),(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},"Metric"),(0,r.kt)("th",{parentName:"tr",align:null},"Resync"),(0,r.kt)("th",{parentName:"tr",align:null},"Full Pruning"),(0,r.kt)("th",{parentName:"tr",align:null},"Full Pruning + Memory Budget (4 GB)"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Time of execution")),(0,r.kt)("td",{parentName:"tr",align:null},"~4h"),(0,r.kt)("td",{parentName:"tr",align:null},"~24h"),(0,r.kt)("td",{parentName:"tr",align:null},"~12h")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Minimum free disk space")),(0,r.kt)("td",{parentName:"tr",align:null},"N/A - you can execute resync even if there is 0 free space (avoid such case)"),(0,r.kt)("td",{parentName:"tr",align:null},"250 GB"),(0,r.kt)("td",{parentName:"tr",align:null},"250 GB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Attestation rate drop")),(0,r.kt)("td",{parentName:"tr",align:null},"100% - no attestation rewards during that time or highly reduced"),(0,r.kt)("td",{parentName:"tr",align:null},"5-10% during that time."),(0,r.kt)("td",{parentName:"tr",align:null},"TBC - not enough data yet")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Average block processing time of new blocks during process")),(0,r.kt)("td",{parentName:"tr",align:null},"N/A - new blocks are being processed after state but are significantly slower until OldBodies and OldReceipts are downloaded. Afterwards, average about 0.35s"),(0,r.kt)("td",{parentName:"tr",align:null},"0.7s"),(0,r.kt)("td",{parentName:"tr",align:null},"1.0s")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Is node online during process?")),(0,r.kt)("td",{parentName:"tr",align:null},"No - unless State is synced"),(0,r.kt)("td",{parentName:"tr",align:null},"Yes - node follows chain and all modules are still enabled."),(0,r.kt)("td",{parentName:"tr",align:null},"Yes - node follows chain and all modules are still enabled.")))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Command used for testing IOPS of disk:\\\n",(0,r.kt)("inlineCode",{parentName:"p"},"fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9cf795e3.be0dc366.js b/assets/js/9cf795e3.be0dc366.js new file mode 100644 index 000000000..c8128211b --- /dev/null +++ b/assets/js/9cf795e3.be0dc366.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8967],{1685:i=>{i.exports=JSON.parse('{"title":"Monitoring","slug":"/category/monitoring","permalink":"/docs/category/monitoring","navigation":{"previous":{"title":"witness","permalink":"/docs/interacting-with-nethermind/json-rpc-api/witness"},"next":{"title":"Metrics","permalink":"/docs/monitoring/metrics-explanation/"}}}')}}]); \ No newline at end of file diff --git a/assets/js/9d85131a.6e7167e8.js b/assets/js/9d85131a.6e7167e8.js new file mode 100644 index 000000000..f70c0a9cf --- /dev/null +++ b/assets/js/9d85131a.6e7167e8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2529],{3905:(t,e,a)=>{a.d(e,{Zo:()=>o,kt:()=>c});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function p(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var d=n.createContext({}),m=function(t){var e=n.useContext(d),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},o=function(t){var e=m(t.components);return n.createElement(d.Provider,{value:e},t.children)},k="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},N=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,d=t.parentName,o=p(t,["components","mdxType","originalType","parentName"]),k=m(a),N=r,c=k["".concat(d,".").concat(N)]||k[N]||s[N]||l;return a?n.createElement(c,i(i({ref:e},o),{},{components:a})):n.createElement(c,i({ref:e},o))}));function c(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=N;var p={};for(var d in e)hasOwnProperty.call(e,d)&&(p[d]=e[d]);p.originalType=t,p[k]="string"==typeof t?t:r,i[1]=p;for(var m=2;m<l;m++)i[m]=a[m];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}N.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(t){let{children:e,hidden:a,className:i}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>C});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),p=a(6550),d=a(1980),m=a(7392),o=a(12);function k(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function s(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??k(a);return function(t){const e=(0,m.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function N(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function c(t){let{queryString:e=!1,groupId:a}=t;const n=(0,p.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,d._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function f(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=s(t),[i,p]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!N({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[d,m]=c({queryString:a,groupId:n}),[k,f]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,o.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),u=(()=>{const t=d??k;return N({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{u&&p(u)}),[u]);return{selectedValue:i,selectValue:(0,r.useCallback)((t=>{if(!N({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);p(t),m(t),f(t)}),[m,f,l]),tabValues:l}}var u=a(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(t){let{className:e,block:a,selectedValue:p,selectValue:d,tabValues:m}=t;const o=[],{blockElementScrollPositionUntilNextRender:k}=(0,i.o5)(),s=t=>{const e=t.currentTarget,a=o.indexOf(e),n=m[a].value;n!==p&&(k(e),d(n))},N=t=>{let e=null;switch(t.key){case"Enter":s(t);break;case"ArrowRight":{const a=o.indexOf(t.currentTarget)+1;e=o[a]??o[0];break}case"ArrowLeft":{const a=o.indexOf(t.currentTarget)-1;e=o[a]??o[o.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},m.map((t=>{let{value:e,label:a,attributes:i}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:p===e?0:-1,"aria-selected":p===e,key:e,ref:t=>o.push(t),onKeyDown:N,onClick:s},i,{className:(0,l.Z)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":p===e})}),a??e)})))}function y(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function h(t){const e=f(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",b.tabList)},r.createElement(g,(0,n.Z)({},t,e)),r.createElement(y,(0,n.Z)({},t,e)))}function C(t){const e=(0,u.Z)();return r.createElement(h,(0,n.Z)({key:String(e)},t))}},84:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>o,contentTitle:()=>d,default:()=>c,frontMatter:()=>p,metadata:()=>m,toc:()=>k});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const p={},d="parity",m={unversionedId:"nethermind-utilities/cli/parity",id:"nethermind-utilities/cli/parity",title:"parity",description:"parity.clearEngineSigner",source:"@site/docs/06-nethermind-utilities/cli/parity.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/parity",permalink:"/docs/nethermind-utilities/cli/parity",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/parity.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"node",permalink:"/docs/nethermind-utilities/cli/node"},next:{title:"personal",permalink:"/docs/nethermind-utilities/cli/personal"}},o={},k=[{value:"parity.clearEngineSigner",id:"parityclearenginesigner",level:2},{value:"parity.enode",id:"parityenode",level:2},{value:"parity.getBlockReceipts",id:"paritygetblockreceipts",level:2},{value:"parity.netPeers",id:"paritynetpeers",level:2},{value:"parity.pendingTransactions",id:"paritypendingtransactions",level:2},{value:"parity.setEngineSigner",id:"paritysetenginesigner",level:2},{value:"parity.setEngineSignerSecret",id:"paritysetenginesignersecret",level:2}],s={toc:k},N="wrapper";function c(t){let{components:e,...a}=t;return(0,r.kt)(N,(0,n.Z)({},s,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"parity"},"parity"),(0,r.kt)("h2",{id:"parityclearenginesigner"},"parity.clearEngineSigner"),(0,r.kt)("p",null,"Clears an authority account for signing consensus messages. Blocks will not be sealed."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"parity.clearEngineSigner()"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of parity.clearEngineSigner"',title:'"Example',request:!0,of:!0,'parity.clearEngineSigner"':!0},"parity.clearEngineSigner()\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/parity#parity_clearenginesigner"},"See also JSON RPC parity_clearEngineSigner")),(0,r.kt)("h2",{id:"parityenode"},"parity.enode"),(0,r.kt)("p",null,"Returns the node enode URI."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"parity.enode"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"parity.enode\n"))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"enode://a9cfa3cb16b537e131b0f141b5ef0c0ab9bf0dbec7799c3fc7bf8a974ff3e74e9b3258951b285dfed07ab395049bcd65fed96116bb92561612682551ec458497@18.193.43.58:30303\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/parity#parity_enode"},"See also JSON RPC parity_enode")),(0,r.kt)("h2",{id:"paritygetblockreceipts"},"parity.getBlockReceipts"),(0,r.kt)("p",null,"Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"parity.getBlockReceipts(blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"parity.getBlockReceipts(latest)\n"))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "transactionHash": "0x5bea2e9354f63960beaf02942e7c791e61ae47ce6952115afcb3d7fbd5b8043b","transactionIndex": "0x2","blockHash": "0x31fda0834473452ad7df17e351bb540294fe9cf9752472468851f6b3a2c5f5aa","blockNumber": "0x88de36","cumulativeGasUsed": "0x50e46","gasUsed": "0x5208","from": "0xdd078bc60e500d379eaf30fc8658661ea0f2608a","to": "0x5aab44fdc254f247dcb7ad89f248e7da346081d5","contractAddress": null,"logs": [ ],"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status": "0x1","type": "0x0" }, (...)\n'))),(0,r.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CumulativeGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EffectiveGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ContractAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Logs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"LogEntryForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Root"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Status"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"LogEntryForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Removed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Topics"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Keccak[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/parity#parity_getblockreceipts"},"See also JSON RPC parity_getBlockReceipts")),(0,r.kt)("h2",{id:"paritynetpeers"},"parity.netPeers"),(0,r.kt)("p",null,"Returns connected peers. Peers with non-empty protocols have completed handshake."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"parity.netPeers"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityNetPeers object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"parity.netPeers\n"))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityNetPeers")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Active"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Connected"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Max"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Peers"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PeerInfo[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PeerInfo[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Id"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Name"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Caps"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Network"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PeerNetworkInfo object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Protocols"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/parity#parity_netpeers"},"See also JSON RPC parity_netPeers")),(0,r.kt)("h2",{id:"paritypendingtransactions"},"parity.pendingTransactions"),(0,r.kt)("p",null,"Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given\nsender address."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"parity.pendingTransactions(address)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTransaction object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'parity.pendingTransactions(["0x78467cada5f1883e79fcf0f3ebfa50abeec8c820"])\n'))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "hash": "0x9372fe18622fd45569ef117644d4cda4af51d11bb3c72fa27690e78c9b0d7808","nonce": "0x11b55","blockHash": null,"blockNumber": null,"transactionIndex": null,"from": "0x89a3fc1d3c68f927be68d3de139980940a89fc80","to": "0x89a3fc1d3c68f927be68d3de139980940a89fc80","value": "0x0","gasPrice": "0x3b9aca08","gas": "0x7530","input": "0x2f47e6a5c13bb151cad6f7297ceb6a197a9be6fdb3acbcfe1df3cad362525932","raw": "0xf88683011b55843b9aca088275309489a3fc1d3c68f927be68d3de139980940a89fc8080a02f47e6a5c13bb151cad6f7297ceb6a197a9be6fdb3acbcfe1df3cad3625259322ba04cfe3030a781f8af08ebe69286a4fab707f00ce4e535c392ba8249527bdae5e5a002203d6802596ff141506437f7ae72b4391b2bdffafba45f8cb561cf5d24b456","creates": null,"publicKey": "0xf409402c0b151206bb98e1031630681df4c046f0c278f920174daa14a34549fa2da52016ca659c0fe254c542fc3034c5a8da9f4d145fec6150db5ed19b4bc7ce","chainId": 4,"condition": null,"r": "0x4cfe3030a781f8af08ebe69286a4fab707f00ce4e535c392ba8249527bdae5e5","s": "0x02203d6802596ff141506437f7ae72b4391b2bdffafba45f8cb561cf5d24b456","v": "0x2b","standardV": "0x0" }, (...)\n'))),(0,r.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityTransaction")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Raw"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Creates"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PublicKey"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PublicKey object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Condition"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StandardV"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PublicKey")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Bytes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PrefixedBytes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/parity#parity_pendingtransactions"},"See also JSON RPC parity_pendingTransactions")),(0,r.kt)("h2",{id:"paritysetenginesigner"},"parity.setEngineSigner"),(0,r.kt)("p",null,"Sets an authority account for signing consensus messages."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"parity.setEngineSigner(address, password)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"password"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"parity.setEngineSigner(address, password)\n"))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"true\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/parity#parity_setenginesigner"},"See also JSON RPC parity_setEngineSigner")),(0,r.kt)("h2",{id:"paritysetenginesignersecret"},"parity.setEngineSignerSecret"),(0,r.kt)("p",null,"Sets an authority account for signing consensus messages."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"parity.setEngineSignerSecret(privateKey)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"privateKey"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of parity.setEngineSignerSecret"',title:'"Example',request:!0,of:!0,'parity.setEngineSignerSecret"':!0},"parity.setEngineSignerSecret(privateKey)\n")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/parity#parity_setenginesignersecret"},"See also JSON RPC parity_setEngineSignerSecret")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9dd11cd8.ba79b889.js b/assets/js/9dd11cd8.ba79b889.js new file mode 100644 index 000000000..cde5e9812 --- /dev/null +++ b/assets/js/9dd11cd8.ba79b889.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5093],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,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 i(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var o=a.createContext({}),c=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(o.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},b=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),b=r,m=d["".concat(o,".").concat(b)]||d[b]||u[b]||i;return n?a.createElement(m,l(l({ref:t},p),{},{components:n})):a.createElement(m,l({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=b;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[d]="string"==typeof e?e:r,l[1]=s;for(var c=2;c<i;c++)l[c]=n[c];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}b.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(7294),r=n(6010);const i={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:n,className:l}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,l),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>y});var a=n(7462),r=n(7294),i=n(6010),l=n(2466),s=n(6550),o=n(1980),c=n(7392),p=n(12);function d(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function u(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function b(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function m(e){let{queryString:t=!1,groupId:n}=e;const a=(0,s.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(a.location.search);t.set(i,e),a.replace({...a.location,search:t.toString()})}),[i,a])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,i=u(e),[l,s]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!b({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:i}))),[o,c]=m({queryString:n,groupId:a}),[d,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,i]=(0,p.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:a}),k=(()=>{const e=o??d;return b({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{k&&s(k)}),[k]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!b({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);s(e),c(e),f(e)}),[c,f,i]),tabValues:i}}var k=n(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:t,block:n,selectedValue:s,selectValue:o,tabValues:c}=e;const p=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.o5)(),u=e=>{const t=e.currentTarget,n=p.indexOf(t),a=c[n].value;a!==s&&(d(t),o(a))},b=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=p.indexOf(e.currentTarget)+1;t=p[n]??p[0];break}case"ArrowLeft":{const n=p.indexOf(e.currentTarget)-1;t=p[n]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},t)},c.map((e=>{let{value:t,label:n,attributes:l}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:e=>p.push(e),onKeyDown:b,onClick:u},l,{className:(0,i.Z)("tabs__item",h.tabItem,l?.className,{"tabs__item--active":s===t})}),n??t)})))}function N(e){let{lazy:t,children:n,selectedValue:a}=e;const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=i.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},i.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=f(e);return r.createElement("div",{className:(0,i.Z)("tabs-container",h.tabList)},r.createElement(g,(0,a.Z)({},e,t)),r.createElement(N,(0,a.Z)({},e,t)))}function y(e){const t=(0,k.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}},150:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var a=n(7462),r=(n(7294),n(3905)),i=n(4866),l=n(5162);const s={},o="Subscribe module",c={unversionedId:"interacting-with-nethermind/json-rpc-api/subscribe",id:"interacting-with-nethermind/json-rpc-api/subscribe",title:"Subscribe module",description:"eth\\_subscribe",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/subscribe.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/subscribe",permalink:"/docs/interacting-with-nethermind/json-rpc-api/subscribe",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/subscribe.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"rpc",permalink:"/docs/interacting-with-nethermind/json-rpc-api/rpc"},next:{title:"trace",permalink:"/docs/interacting-with-nethermind/json-rpc-api/trace"}},p={},d=[{value:"eth_subscribe",id:"eth_subscribe",level:2},{value:"Parameters",id:"parameters",level:4},{value:"Returns",id:"returns",level:4},{value:"Notifications returns",id:"notifications-returns",level:4},{value:"Supported subscriptions",id:"supported-subscriptions",level:4},{value:"Additional informations",id:"additional-informations",level:4},{value:"newHeads",id:"newheads",level:3},{value:"Example",id:"example",level:4},{value:"logs",id:"logs",level:3},{value:"Example",id:"example-1",level:4},{value:"newPendingTransactions",id:"newpendingtransactions",level:3},{value:"Example",id:"example-2",level:4},{value:"droppedPendingTransactions",id:"droppedpendingtransactions",level:3},{value:"Example",id:"example-3",level:4},{value:"syncing",id:"syncing",level:3},{value:"Example",id:"example-4",level:4},{value:"eth_unsubscribe",id:"eth_unsubscribe",level:2},{value:"Parameters",id:"parameters-1",level:4},{value:"Returns",id:"returns-1",level:4},{value:"Example",id:"example-5",level:4}],u={toc:d},b="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(b,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"subscribe-module"},"Subscribe module"),(0,r.kt)("h2",{id:"eth_subscribe"},"eth","_","subscribe"),(0,r.kt)("p",null,"Starts a subscription to specific event. For every event matching subscription, JSON-RPC notification with event details and subscription ID will be sent to a client.",(0,r.kt)("br",{parentName:"p"}),"\n","Subscriptions are created with a regular RPC call, with ",(0,r.kt)("inlineCode",{parentName:"p"},"eth_subscribe")," as method and subscription type as first parameter. If successful, returns ",(0,r.kt)("inlineCode",{parentName:"p"},"subscription ID"),"."),(0,r.kt)("h4",{id:"parameters"},"Parameters"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"subscriptionType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Type of subscription you want to subscribe to.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"arguments"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Filter object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Optional arguments available only for logs subscription.")))),(0,r.kt)("h4",{id:"returns"},"Returns"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Subscription ID, used to identify subscription and to unsubscribe.")))),(0,r.kt)("h4",{id:"notifications-returns"},"Notifications returns"),(0,r.kt)("p",null,"Depends on the subscription type."),(0,r.kt)("h4",{id:"supported-subscriptions"},"Supported subscriptions"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"newHeads")," - subscribes to incoming block headers."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"logs")," - subscribes to incoming logs, filtered by the given options."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"newPendingTransactions")," - subscribes to incoming pending transactions."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"syncing")," - subscribes to syncing events.")),(0,r.kt)("h4",{id:"additional-informations"},"Additional informations"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Subscriptions require a full duplex connections. Due to this reason, they are not available via HTTP and supported only on WebSockets."),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/websockets/wscat"},"Learn how to install and use wscat - simple command line WebSockets client."))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Subscriptions are coupled to a connection. If the connection is closed, all subscriptions created over this connection are removed.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Subscribing to some events can cause a flood of notifications, e.g. listening for all logs/blocks when the node starts to synchronize."))),(0,r.kt)("h3",{id:"newheads"},"newHeads"),(0,r.kt)("p",null,"Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations. Returns ",(0,r.kt)("inlineCode",{parentName:"p"},"Block object"),"."),(0,r.kt)("p",null,"Parameter: ",(0,r.kt)("inlineCode",{parentName:"p"},'"newHeads"')),(0,r.kt)("h4",{id:"example"},"Example"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'{"method":"eth_subscribe","params":["newHeads"],"id":1,"jsonrpc":"2.0"}\n'))),(0,r.kt)(l.Z,{value:"response",label:"Response of newHeads",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{"jsonrpc":"2.0","result":"0x1a14b6bdcf4542fabf71c4abee244e47","id":1}\n'))),(0,r.kt)(l.Z,{value:"notification",label:"Notification of newHeads",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "jsonrpc":"2.0",\n "method":"eth_subscription",\n "params":\n {\n "subscription":"0x1a14b6bdcf4542fabf71c4abee244e47",\n "result":\n {\n "author":"0x000000568b9b5a365eaa767d42e74ed88915c204",\n "difficulty":"0x1",\n "extraData":"0x4e65746865726d696e6420312e392e32322d302d6463373666616366612d32308639ad8ff3d850a261f3b26bc2a55e0f3a718de0dd040a19a4ce37e7b473f2d7481448a1e1fd8fb69260825377c0478393e6055f471a5cf839467ce919a6ad2700",\n "gasLimit":"0x7a1200",\n "gasUsed":"0x0",\n "hash":"0xa4856602944fdfd18c528ef93cc52a681b38d766a7e39c27a47488c8461adcb0",\n "logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",\n "miner":"0x0000000000000000000000000000000000000000",\n "mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000",\n "nonce":"0x0000000000000000",\n "number":"0x434822",\n "parentHash":"0x1a9bdc31fc785f8a95efeeb7ae58f40f6366b8e805f47447a52335c95f4ceb49",\n "receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",\n "sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",\n "size":"0x261",\n "stateRoot":"0xf38c4bf2958e541ec6df148e54ce073dc6b610f8613147ede568cb7b5c2d81ee",\n "totalDifficulty":"0x633ebd",\n "timestamp":"0x604726b0",\n "transactions":[],\n "transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",\n "uncles":[]\n }\n }\n}\n')))),(0,r.kt)("h3",{id:"logs"},"logs"),(0,r.kt)("p",null,"Subscribes to incoming logs, filtered by the given options. In case of a chain reorganization previous sent logs that are on the old chain will be resend with the ",(0,r.kt)("inlineCode",{parentName:"p"},"removed")," property set to ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"."),(0,r.kt)("p",null,"Parameters:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'"logs"')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Filter object")," ","(","optional",")",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"fromBlock")," - ",(0,r.kt)("inlineCode",{parentName:"li"},'"earliest"'),", ",(0,r.kt)("inlineCode",{parentName:"li"},'"pending"')," or ",(0,r.kt)("inlineCode",{parentName:"li"},'"latest"')," ","(","optional",")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"toBlock")," - ",(0,r.kt)("inlineCode",{parentName:"li"},'"earliest"'),", ",(0,r.kt)("inlineCode",{parentName:"li"},'"pending"')," or ",(0,r.kt)("inlineCode",{parentName:"li"},'"latest"')," ","(","optional",")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"address")," - either an address or an array of addresses. Only logs that are created from these addresses are returned ","(","optional",")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"topics")," - only logs which match the specified topics ","(","optional",")")))),(0,r.kt)("p",null,"If RPC call doesn't have second parameter, or parameters ",(0,r.kt)("inlineCode",{parentName:"p"},"fromBlock")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"toBlock")," are not provided, subscription will use default filter: ",(0,r.kt)("inlineCode",{parentName:"p"},"fromBlock")," - ",(0,r.kt)("inlineCode",{parentName:"p"},'"latest"'),", ",(0,r.kt)("inlineCode",{parentName:"p"},"toBlock")," - ",(0,r.kt)("inlineCode",{parentName:"p"},'"latest"')),(0,r.kt)("h4",{id:"example-1"},"Example"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-text"},'{\n "method":"eth_subscribe",\n "params":\n ["logs",\n {\n "fromBlock":"latest",\n "toBlock":"latest",\n "address":"0xb7705ae4c6f81b66cdb323c65f4e8133690fc099",\n "topics":["0x03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760"]\n }\n ],\n "id":1,\n "jsonrpc":"2.0"\n}\n'))),(0,r.kt)(l.Z,{value:"response",label:"Response of logs",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{"jsonrpc":"2.0","result":"0x0de42098e48c4ffba6d40561dc17b065","id":1}\n'))),(0,r.kt)(l.Z,{value:"notification",label:"Notification of logs",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "jsonrpc":"2.0",\n "method":"eth_subscription",\n "params":\n {\n "subscription":"0x0de42098e48c4ffba6d40561dc17b065",\n "result":\n {\n "address":"0xb7705ae4c6f81b66cdb323c65f4e8133690fc099",\n "blockHash":"0x05333898e7f28f21a56370ed272b16c4b603d8a1dd26ec44f22639d8d90fe9d9",\n "blockNumber":"0x43489c",\n "data":"0x0000000000000000000000000000000000000000000000000000000000000000",\n "logIndex":"0x7",\n "removed":false,\n "topics":["0x03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760","0x1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a69111","0x000000000000000000000000c74f17181bf55635be65672e366b20f70662b79c"],\n "transactionHash":"0x29c551ba625bfaf58cb3d407c3e6f5c647032725c145cf55c7353cd3387cf845",\n "transactionIndex":"0xa",\n "transactionLogIndex":"0x0"\n }\n }\n}\n')))),(0,r.kt)("h3",{id:"newpendingtransactions"},"newPendingTransactions"),(0,r.kt)("p",null,"Subscribes to incoming pending transactions. Returns transaction hash."),(0,r.kt)("p",null,"Parameter: ",(0,r.kt)("inlineCode",{parentName:"p"},'"newPendingTransactions"')),(0,r.kt)("h4",{id:"example-2"},"Example"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-text"},'{"method":"eth_subscribe","params":["newPendingTransactions"],"id":1,"jsonrpc":"2.0"}\n'))),(0,r.kt)(l.Z,{value:"response",label:"Response of newPendingTransactions",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{"jsonrpc":"2.0","result":"0xfa561cbadf9b4bd79b62537661d18f27","id":1}\n'))),(0,r.kt)(l.Z,{value:"notification",label:"Notification of newPendingTransactions",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "jsonrpc":"2.0",\n "method":"eth_subscription",\n "params":\n {\n "subscription":"0xfa561cbadf9b4bd79b62537661d18f27",\n "result":"0x6ad1058c56f71fe630053d24905f06d80677262ae2e8f42799690ab6b9fc5bd0"\n }\n}\n')))),(0,r.kt)("h3",{id:"droppedpendingtransactions"},"droppedPendingTransactions"),(0,r.kt)("p",null,"Subscribes to transactions evicted from transaction pool. Returns transaction hash."),(0,r.kt)("p",null,"Parameter: ",(0,r.kt)("inlineCode",{parentName:"p"},'"droppedPendingTransactions"')),(0,r.kt)("h4",{id:"example-3"},"Example"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{"method":"eth_subscribe","params":["droppedPendingTransactions"],"id":1,"jsonrpc":"2.0"}\n'))),(0,r.kt)(l.Z,{value:"response",label:"Response of droppedPendingTransactions",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{"jsonrpc":"2.0","result":"0xfa561cbadf9b4bd79b62537661d18f27","id":1}\n'))),(0,r.kt)(l.Z,{value:"objects",label:"Notifications of droppedPendingTransactions",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "jsonrpc":"2.0",\n "method":"eth_subscription",\n "params":\n {\n "subscription":"0xfa561cbadf9b4bd79b62537661d18f27",\n "result":"0x6ad1058c56f71fe630053d24905f06d80677262ae2e8f42799690ab6b9fc5bd0"\n }\n}\n')))),(0,r.kt)("h3",{id:"syncing"},"syncing"),(0,r.kt)("p",null,"Subscribe to syncing events. Returns boolean ",(0,r.kt)("inlineCode",{parentName:"p"},"false")," once if node is synced or an object with statistics once when the node starts syncing."),(0,r.kt)("p",null,"Parameter: ",(0,r.kt)("inlineCode",{parentName:"p"},'"syncing"')),(0,r.kt)("h4",{id:"example-4"},"Example"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-text"},'{"method":"eth_subscribe","params":["syncing"],"id":1,"jsonrpc":"2.0"}\n'))),(0,r.kt)(l.Z,{value:"response",label:"Response of syncing",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{"jsonrpc":"2.0","result":"0x28d37f96bc784de4abf96ee4f8005a79","id":1}\n'))),(0,r.kt)(l.Z,{value:"objects",label:"Notification of syncing",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "jsonrpc":"2.0",\n "method":"eth_subscription",\n "params":\n {\n "subscription":"0x28d37f96bc784de4abf96ee4f8005a79",\n "result":false\n }\n}\n\nor\n\n{\n "jsonrpc":"2.0",\n "method":"eth_subscription",\n "params":\n {\n "subscription":"0x28d37f96bc784de4abf96ee4f8005a79",\n "result":\n {\n "isSyncing":true,\n "startingBlock":"0x0",\n "currentBlock":"0x4346fe",\n "highestBlock":"0x434806"\n }\n }\n}\n')))),(0,r.kt)("h2",{id:"eth_unsubscribe"},"eth","_","unsubscribe"),(0,r.kt)("p",null,"Unsubscribes from subscription. Subscriptions are cancelled with a regular RPC call with ",(0,r.kt)("inlineCode",{parentName:"p"},"eth_unsubscribe")," as method and ",(0,r.kt)("inlineCode",{parentName:"p"},"subscription ID")," as a parameter. It returns a ",(0,r.kt)("inlineCode",{parentName:"p"},"bool")," indicating if the subscription was cancelled successful."),(0,r.kt)("h4",{id:"parameters-1"},"Parameters"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"subscriptionId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:"left"},"ID of subscription you want to unsubscribe.")))),(0,r.kt)("h4",{id:"returns-1"},"Returns"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"bool")),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"true")," if subscription was cancelled successful, ",(0,r.kt)("inlineCode",{parentName:"td"},"false")," if not.")))),(0,r.kt)("h4",{id:"example-5"},"Example"),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-text"},'{"method":"eth_unsubscribe","params":["0x3cd2bcd1630948fe89190ca27b3b5913"],"id":1,"jsonrpc":"2.0"}\n'))),(0,r.kt)(l.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{"jsonrpc":"2.0","result":true,"id":1}\n')))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.a9bd7bfc.js b/assets/js/9e4087bc.a9bd7bfc.js new file mode 100644 index 000000000..fde5f9749 --- /dev/null +++ b/assets/js/9e4087bc.a9bd7bfc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3608],{3169:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});var r=a(7294),l=a(9960),n=a(5999),c=a(1944),m=a(7961);function i(e){let{year:t,posts:a}=e;return r.createElement(r.Fragment,null,r.createElement("h3",null,t),r.createElement("ul",null,a.map((e=>r.createElement("li",{key:e.metadata.date},r.createElement(l.Z,{to:e.metadata.permalink},e.metadata.formattedDate," - ",e.metadata.title))))))}function s(e){let{years:t}=e;return r.createElement("section",{className:"margin-vert--lg"},r.createElement("div",{className:"container"},r.createElement("div",{className:"row"},t.map(((e,t)=>r.createElement("div",{key:t,className:"col col--4 margin-vert--lg"},r.createElement(i,e)))))))}function o(e){let{archive:t}=e;const a=(0,n.I)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),l=(0,n.I)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),i=function(e){const t=e.reduceRight(((e,t)=>{const a=t.metadata.date.split("-")[0],r=e.get(a)??[];return e.set(a,[t,...r])}),new Map);return Array.from(t,(e=>{let[t,a]=e;return{year:t,posts:a}}))}(t.blogPosts);return r.createElement(r.Fragment,null,r.createElement(c.d,{title:a,description:l}),r.createElement(m.Z,null,r.createElement("header",{className:"hero hero--primary"},r.createElement("div",{className:"container"},r.createElement("h1",{className:"hero__title"},a),r.createElement("p",{className:"hero__subtitle"},l))),r.createElement("main",null,i.length>0&&r.createElement(s,{years:i}))))}}}]); \ No newline at end of file diff --git a/assets/js/a2b442ad.63821026.js b/assets/js/a2b442ad.63821026.js new file mode 100644 index 000000000..23d877f85 --- /dev/null +++ b/assets/js/a2b442ad.63821026.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3111],{3905:(t,e,a)=>{a.d(e,{Zo:()=>k,kt:()=>f});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function d(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function i(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),m=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):d(d({},e),t)),a},k=function(t){var e=m(t.components);return n.createElement(p.Provider,{value:e},t.children)},N="mdxType",o={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},b=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,p=t.parentName,k=i(t,["components","mdxType","originalType","parentName"]),N=m(a),b=r,f=N["".concat(p,".").concat(b)]||N[b]||o[b]||l;return a?n.createElement(f,d(d({ref:e},k),{},{components:a})):n.createElement(f,d({ref:e},k))}));function f(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,d=new Array(l);d[0]=b;var i={};for(var p in e)hasOwnProperty.call(e,p)&&(i[p]=e[p]);i.originalType=t,i[N]="string"==typeof t?t:r,d[1]=i;for(var m=2;m<l;m++)d[m]=a[m];return n.createElement.apply(null,d)}return n.createElement.apply(null,a)}b.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>d});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function d(t){let{children:e,hidden:a,className:d}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,d),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>C});var n=a(7462),r=a(7294),l=a(6010),d=a(2466),i=a(6550),p=a(1980),m=a(7392),k=a(12);function N(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function o(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??N(a);return function(t){const e=(0,m.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function b(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function f(t){let{queryString:e=!1,groupId:a}=t;const n=(0,i.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,p._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function c(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=o(t),[d,i]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!b({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[p,m]=f({queryString:a,groupId:n}),[N,c]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,k.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),s=(()=>{const t=p??N;return b({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{s&&i(s)}),[s]);return{selectedValue:d,selectValue:(0,r.useCallback)((t=>{if(!b({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);i(t),m(t),c(t)}),[m,c,l]),tabValues:l}}var s=a(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(t){let{className:e,block:a,selectedValue:i,selectValue:p,tabValues:m}=t;const k=[],{blockElementScrollPositionUntilNextRender:N}=(0,d.o5)(),o=t=>{const e=t.currentTarget,a=k.indexOf(e),n=m[a].value;n!==i&&(N(e),p(n))},b=t=>{let e=null;switch(t.key){case"Enter":o(t);break;case"ArrowRight":{const a=k.indexOf(t.currentTarget)+1;e=k[a]??k[0];break}case"ArrowLeft":{const a=k.indexOf(t.currentTarget)-1;e=k[a]??k[k.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},m.map((t=>{let{value:e,label:a,attributes:d}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===e?0:-1,"aria-selected":i===e,key:e,ref:t=>k.push(t),onKeyDown:b,onClick:o},d,{className:(0,l.Z)("tabs__item",g.tabItem,d?.className,{"tabs__item--active":i===e})}),a??e)})))}function y(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function u(t){const e=c(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",g.tabList)},r.createElement(h,(0,n.Z)({},t,e)),r.createElement(y,(0,n.Z)({},t,e)))}function C(t){const e=(0,s.Z)();return r.createElement(u,(0,n.Z)({key:String(e)},t))}},1694:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>k,contentTitle:()=>p,default:()=>f,frontMatter:()=>i,metadata:()=>m,toc:()=>N});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),d=a(5162);const i={},p="eth",m={unversionedId:"nethermind-utilities/cli/eth",id:"nethermind-utilities/cli/eth",title:"eth",description:"eth.blockNumber",source:"@site/docs/06-nethermind-utilities/cli/eth.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/eth",permalink:"/docs/nethermind-utilities/cli/eth",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/eth.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"diag",permalink:"/docs/nethermind-utilities/cli/diag"},next:{title:"net",permalink:"/docs/nethermind-utilities/cli/net"}},k={},N=[{value:"eth.blockNumber",id:"ethblocknumber",level:2},{value:"eth.call",id:"ethcall",level:2},{value:"eth.chainId",id:"ethchainid",level:2},{value:"eth.createAccessList",id:"ethcreateaccesslist",level:2},{value:"eth.estimateGas",id:"ethestimategas",level:2},{value:"eth.feeHistory",id:"ethfeehistory",level:2},{value:"eth.getAccount",id:"ethgetaccount",level:2},{value:"eth.getBalance",id:"ethgetbalance",level:2},{value:"eth.getBlockByHash",id:"ethgetblockbyhash",level:2},{value:"eth.getBlockByNumber",id:"ethgetblockbynumber",level:2},{value:"eth.getBlockTransactionCountByHash",id:"ethgetblocktransactioncountbyhash",level:2},{value:"eth.getBlockTransactionCountByNumber",id:"ethgetblocktransactioncountbynumber",level:2},{value:"eth.getCode",id:"ethgetcode",level:2},{value:"eth.getFilterChanges",id:"ethgetfilterchanges",level:2},{value:"eth.getLogs",id:"ethgetlogs",level:2},{value:"eth.getProof",id:"ethgetproof",level:2},{value:"eth.getStorageAt",id:"ethgetstorageat",level:2},{value:"eth.getTransactionByBlockNumberAndIndex",id:"ethgettransactionbyblocknumberandindex",level:2},{value:"eth.getTransactionByHash",id:"ethgettransactionbyhash",level:2},{value:"eth.getTransactionCount",id:"ethgettransactioncount",level:2},{value:"eth.getTransactionReceipt",id:"ethgettransactionreceipt",level:2},{value:"eth.getUncleByBlockHashAndIndex",id:"ethgetunclebyblockhashandindex",level:2},{value:"eth.getUncleByBlockNumberAndIndex",id:"ethgetunclebyblocknumberandindex",level:2},{value:"eth.getUncleCountByBlockNumber",id:"ethgetunclecountbyblocknumber",level:2},{value:"eth.newPendingTransactionFilter",id:"ethnewpendingtransactionfilter",level:2},{value:"eth.pendingTransactions",id:"ethpendingtransactions",level:2},{value:"eth.protocolVersion",id:"ethprotocolversion",level:2},{value:"eth.sendEth",id:"ethsendeth",level:2},{value:"eth.sendRawTransaction",id:"ethsendrawtransaction",level:2},{value:"eth.sendTransaction",id:"ethsendtransaction",level:2},{value:"eth.sendWei",id:"ethsendwei",level:2},{value:"eth.syncing",id:"ethsyncing",level:2}],o={toc:N},b="wrapper";function f(t){let{components:e,...a}=t;return(0,r.kt)(b,(0,n.Z)({},o,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"eth"},"eth"),(0,r.kt)("h2",{id:"ethblocknumber"},"eth.blockNumber"),(0,r.kt)("p",null,"Returns current block number"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.blockNumber"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.blockNumber\n"))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x885480\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_blocknumber"},"See also JSON RPC eth_blockNumber")),(0,r.kt)("h2",{id:"ethcall"},"eth.call"),(0,r.kt)("p",null,"Executes a tx call (does not create a transaction)"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.call(transactionCall, blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionCall"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.call(transactionCall, blockParameter)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_call"},"See also JSON RPC eth_call")),(0,r.kt)("h2",{id:"ethchainid"},"eth.chainId"),(0,r.kt)("p",null,"Returns ChainID"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.chainId"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.chainId\n"))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x4\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_chainid"},"See also JSON RPC eth_chainId")),(0,r.kt)("h2",{id:"ethcreateaccesslist"},"eth.createAccessList"),(0,r.kt)("p",null,"Creates an ",(0,r.kt)("a",{parentName:"p",href:"https://eips.ethereum.org/EIPS/eip-2930"},"EIP2930")," type AccessList for the given transaction"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"Hint:")," If your transaction has code executed, then you can generate transaction access list with\neth_createAccessList. If you send it with your transaction then it will lower your gas cost on Ethereum")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.createAccessList(transactionCall, blockParameter, optimize)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionCall"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Transaction's details")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"(optional)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"optimize"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"},"(optional)")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.createAccessList(transactionCall, blockParameter, optimize)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "accessList": [ { "address": "0xfffffffffffffffffffffffffffffffffffffffe","storageKeys": [ "0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002" ] },{ "address": "0x76e68a8696537e4141926f3e528733af9e237d69","storageKeys": [ ] } ],"gasUsed": "0xf71b" }\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_createaccesslist"},"See also JSON RPC eth_createAccessList")),(0,r.kt)("h2",{id:"ethestimategas"},"eth.estimateGas"),(0,r.kt)("p",null,"Executes a tx call and returns gas used (does not create a transaction)"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.estimateGas(transactionCall, blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionCall"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.estimateGas(transactionCall, blockParameter)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_estimategas"},"See also JSON RPC eth_estimateGas")),(0,r.kt)("h2",{id:"ethfeehistory"},"eth.feeHistory"),(0,r.kt)("p",null,"Returns block fee history."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.feeHistory(blockCount, newestBlock, rewardPercentiles)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockCount"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"newestBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"rewardPercentiles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Double[] object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"FeeHistoryResults object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.feeHistory(blockCount, newestBlock, rewardPercentiles)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "baseFeePerGas": [ "0x116c1cbb03", "0x10c3714c06" ], "gasUsedRatio": [ 0.3487305666666667, 0.3 ], "oldestBlock": "0xc7e5ff", "reward": [ [ "0x3b9aca00","0x3b9aca00" ], [ "0x0","0x3bb24dfa" ] ] }\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Double[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type")))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"FeeHistoryResults")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsedRatio"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Double[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"OldestBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Reward"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"UInt256[][] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UInt256[][]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Length"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LongLength"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Rank"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SyncRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsReadOnly"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsFixedSize"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsSynchronized"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_feehistory"},"See also JSON RPC eth_feeHistory")),(0,r.kt)("h2",{id:"ethgetaccount"},"eth.getAccount"),(0,r.kt)("p",null,"Retrieves Accounts via Address and Blocknumber"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getAccount(accountAddress, blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"accountAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccountForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getAccount(accountAddress, blockParameter)\n"))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccountForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CodeHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Balance"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getaccount"},"See also JSON RPC eth_getAccount")),(0,r.kt)("h2",{id:"ethgetbalance"},"eth.getBalance"),(0,r.kt)("p",null,"Returns account balance"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getBalance(address, blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getBalance(address, blockParameter)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x6c8ae945bfe6e\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getbalance"},"See also JSON RPC eth_getBalance")),(0,r.kt)("h2",{id:"ethgetblockbyhash"},"eth.getBlockByHash"),(0,r.kt)("p",null,"Retrieves a block by hash"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getBlockByHash(blockHash, returnFullTransactionObjects)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"returnFullTransactionObjects"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getBlockByHash(blockHash, returnFullTransactionObjects)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{"author":"0x0000000000000000000000000000000000000000","difficulty":"0x1","extraData":"0x000000000000436f6e73656e5379732048797065726c656467657220426573754d3f7b71165a8266fcc569c96b6fcf9971ee4a8df59eeec4dcced0df8d778733429988e21d0124918859f988be9debf4b25fb5282ea41a2fc15f827f446ec93200","gasLimit":"0x1c9c364","gasUsed":"0x3aa87","hash":"0xf33507f93a046dbdbb80dee5f47b84283297f6c53f1b665adc3cb6fe4138aa84","logsBloom":"0x00000000000020000000000008000060000000000000000000000000000000000000000000000000201000020008000000000000000000000100000000200020000000000000000000000008000000000000000010000000000000000000000000000000000000000000080000000000000000000000002000000010000000000000000000000000000000000000000000040000001000000000000000020000020400000000000000000000000000000000000000000000000000010000000000000002080000000000000000020000000000000000000000000000000000000010020000000000000000000000000100000000000000000000010000000000","miner":"0x0000000000000000000000000000000000000000","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","number":"0x4e3d79","parentHash":"0x01dba3a7eb61dc6dba3f9663c8fb632f76f60a476f57df74c3e5bd9d0a246339","receiptsRoot":"0x70f3bd929735d8edeb953cd30a27e703e7dd3ec4af32cb74fe8ac302f9e7fb87","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","size":"0x754","stateRoot":"0x71af7e25302d1baa4c988c267450eb2c7fa20938fac377809c8d77f8ff8108ac","totalDifficulty":"0x726275","timestamp":"0x60ec1218","baseFeePerGas":"0x7","transactions":["0xa65d391d8149ed0906fab923e870d2bc7f6d27c2be10fe1bcfc6f02869b38ef3","0x369a89354041b7a8cb40edce51c36ebb0ee6ffa4d8056f5a658d90f3bbe1a81a","0xf857daf60d03381b9a6ecb341b62798b424d20dc05763858e13955dd866b489d"],"transactionsRoot":"0x90115f8dc10c08e748675f52f3904615729a014461ca80d72c60239bf75ee209","uncles":[]}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Difficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Miner"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MixHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ParentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sha3Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signature"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Step"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timestamp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transactions"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Withdrawals"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WithdrawalsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExcessDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getblockbyhash"},"See also JSON RPC eth_getBlockByHash")),(0,r.kt)("h2",{id:"ethgetblockbynumber"},"eth.getBlockByNumber"),(0,r.kt)("p",null,"Retrieves a block by number"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getBlockByNumber(blockParameter, returnFullTransactionObjects)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"returnFullTransactionObjects"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getBlockByNumber(blockParameter, returnFullTransactionObjects)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{"author":"0x0000000000000000000000000000000000000000","difficulty":"0x1","extraData":"0x000000000000436f6e73656e5379732048797065726c656467657220426573754d3f7b71165a8266fcc569c96b6fcf9971ee4a8df59eeec4dcced0df8d778733429988e21d0124918859f988be9debf4b25fb5282ea41a2fc15f827f446ec93200","gasLimit":"0x1c9c364","gasUsed":"0x3aa87","hash":"0xf33507f93a046dbdbb80dee5f47b84283297f6c53f1b665adc3cb6fe4138aa84","logsBloom":"0x00000000000020000000000008000060000000000000000000000000000000000000000000000000201000020008000000000000000000000100000000200020000000000000000000000008000000000000000010000000000000000000000000000000000000000000080000000000000000000000002000000010000000000000000000000000000000000000000000040000001000000000000000020000020400000000000000000000000000000000000000000000000000010000000000000002080000000000000000020000000000000000000000000000000000000010020000000000000000000000000100000000000000000000010000000000","miner":"0x0000000000000000000000000000000000000000","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","number":"0x4e3d79","parentHash":"0x01dba3a7eb61dc6dba3f9663c8fb632f76f60a476f57df74c3e5bd9d0a246339","receiptsRoot":"0x70f3bd929735d8edeb953cd30a27e703e7dd3ec4af32cb74fe8ac302f9e7fb87","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","size":"0x754","stateRoot":"0x71af7e25302d1baa4c988c267450eb2c7fa20938fac377809c8d77f8ff8108ac","totalDifficulty":"0x726275","timestamp":"0x60ec1218","baseFeePerGas":"0x7","transactions":["0xa65d391d8149ed0906fab923e870d2bc7f6d27c2be10fe1bcfc6f02869b38ef3","0x369a89354041b7a8cb40edce51c36ebb0ee6ffa4d8056f5a658d90f3bbe1a81a","0xf857daf60d03381b9a6ecb341b62798b424d20dc05763858e13955dd866b489d"],"transactionsRoot":"0x90115f8dc10c08e748675f52f3904615729a014461ca80d72c60239bf75ee209","uncles":[]}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Difficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Miner"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MixHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ParentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sha3Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signature"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Step"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timestamp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transactions"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Withdrawals"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WithdrawalsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExcessDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getblockbynumber"},"See also JSON RPC eth_getBlockByNumber")),(0,r.kt)("h2",{id:"ethgetblocktransactioncountbyhash"},"eth.getBlockTransactionCountByHash"),(0,r.kt)("p",null,"Returns number of transactions in the block block hash"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getBlockTransactionCountByHash(blockHash)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'eth.getBlockTransactionCountByHash(["0x199c2ef63392fb67f929fe0580e11f62fa6c54b9951a624896da91375a6805b1"])\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x20\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getblocktransactioncountbyhash"},"See also JSON RPC eth_getBlockTransactionCountByHash")),(0,r.kt)("h2",{id:"ethgetblocktransactioncountbynumber"},"eth.getBlockTransactionCountByNumber"),(0,r.kt)("p",null,"Returns number of transactions in the block by block number"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getBlockTransactionCountByNumber(blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'eth.getBlockTransactionCountByNumber(["8934677"])\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x20\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getblocktransactioncountbynumber"},"See also JSON RPC eth_getBlockTransactionCountByNumber")),(0,r.kt)("h2",{id:"ethgetcode"},"eth.getCode"),(0,r.kt)("p",null,"Returns account code at given address and block"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getCode(address, blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getCode(address, blockParameter)\n"))),(0,r.kt)(d.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getcode"},"See also JSON RPC eth_getCode")),(0,r.kt)("h2",{id:"ethgetfilterchanges"},"eth.getFilterChanges"),(0,r.kt)("p",null,"Reads filter changes"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getFilterChanges(filterId)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"filterId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'eth.getFilterChanges(["0x9"])\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"[ ]\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getfilterchanges"},"See also JSON RPC eth_getFilterChanges")),(0,r.kt)("h2",{id:"ethgetlogs"},"eth.getLogs"),(0,r.kt)("p",null,"Reads logs"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getLogs(filter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"filter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Filter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getLogs(filter)\n"))),(0,r.kt)(d.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Filter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FromBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ToBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Topics"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getlogs"},"See also JSON RPC eth_getLogs")),(0,r.kt)("h2",{id:"ethgetproof"},"eth.getProof"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/ethereum/EIPs/issues/1186"},"https://github.com/ethereum/EIPs/issues/1186")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getProof(accountAddress, hashRate, blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"accountAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hashRate"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccountProof object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getProof(accountAddress, hashRate, blockParameter)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},' "accountProof": [ "0xf90211a0446f43a2d3e433732c75bcf3519f4844e0441a4d39b31395ee9a65700c30d3b4a0b9720db63afe9909418fb6e02c9d9f225310856549cc1b66b486041f2d867250a046e6e560e52d4fe0d2f6609f489ba85f18ad1655fee18452588dc08388fbd711a01e68f36c91bd15cbf65587d6db2a7cbd6635907291e77dd80152161da9a28a48a0d2178a1891c26ccaa2d2cec82c231a0640a26a1f5e07c7b5493761bdb3aa94e5a0fa909327d406980a2e602eadd3f56cf8dc89320d4662340962e9cac2beee3d8da0a0fc71e7dec6320a993b4b65b2f82544910d0a4a7c6f8c5a1ebaa38357d259e3a0680161dec84c5f1c8d5e2a585c9708b1b6fbc2dc664a432e045d99f5e7d89259a0f76a745765be58d46d795c44d3900a4a05b6396530244d50822616c8bbb11e19a0594824352d58f5caff819c8df9581b6a41d0e94eb584ed0431d48b48f320bb5ca0e762eb52b2bcacd728fac605de6229dc83588001ecddcd3b454b64c393ee69eda0d319cf1021af0a8535e4916c3404c84917957d73d0711f71fd6456b4533993bba0878240238a894e6fa798671ac3792563c6666a7c7fba8066d090b65d6a7aa701a03c03fdb4d8f4b241442814cbab24ddb42b75c78874f92fedc162b65d0820fc4da06a3318509aa9ff009b9acb9b348f197a134a46a46295714f436d4fbb19057e69a04139df1b6e0a59b093b35f34f9e5e890bc06832e63b366d768dc29e8638b828480","0xf90211a023459f17e04fba3d19c6993f5be413969842fdbdc85d234a91b2f6b08a38be87a0153060eafecbff55ef0794802ef722b6c66698141cdc0610352d3a426976adeba0bd642b7c5111a1fd09da33feb6df031dc352b6cb20fbbe5ebe3eb328db233bd4a0705bff29e05c7ef69c07fecaa5db2457b2f124befc82f9fe6b0e54c8e35632eba03c1b4ffc076434de97050d2351c24689cfaefaa6cf8dc398dd3b8ce365e652c1a0a1ebf845ea0eb252e2a2e5c422ccd74878a3733144dfd62bcaad34758cc98652a01e4184586f5bdbb17ba74fd87539f02378c7adcef99f1538108f9555520e32d6a0b8acdfd5b644fa2c9a54f68039a3af4c6562c1e7f91ea9e63bda5a849f1260b6a05c1f036a2e7a5829799fc7df2d87eac3e7aee55df461b040c36f5b5c61781059a0a67fd871d32642e44120331f76c2616096d04d7fa1a7db421bafbc39713d8bfba085c15b7ab64f61670f4422adb82176d5808fad4abde6fddda507b0e5ff92ba14a0d95e8f16a39d4e52c67c617eef486adcd947854373ac074ff498150c7ca1ab5da03d9d7be595000872ad6aec05667ad85e1aaaeb2050a692818d3e60d8f1628d8ba0984c657192b052d13fb717051631d67fbc83dd5dcb4d074a2fddc01aa122d95ba03643408862d758aea269c05027a1cd616c957e0db5daea529b56964db8b4f04ba01020dce8d692c3d84d9ae3e42c35e4d8adbddf7b4dd3e09e543fc980849f016e80","0xf90211a04c71b4b56ed723da1c1353ec1b4c23e71dfa821664d4041c1ee1770221f507b6a031c851f261a38df9b2bece1a1cb6985bccfaa10d2bb15954b82cd2ceaad87032a08a4a3d0cc260cf0e0fef54490ce45796fdd3f522451976ca7834563c839c630fa003d074f79074566cd33a3d6a57b6ca8426ca9ea972f66b5dfde00f73287fcfcea07003d29a5bd192038600118ab5941af5c79c1f0fc6184ad564180b809c36c7c4a05f181c50402dcff567abe1c6679a8d5e3825125abca4d969c7cbf76503416813a06a85dfca80e442ef79b66162099d52eaf67718589eb794755ce57dc071a85cdaa085cba9e6937a8a5f0a7d1b5ee9eb9f03c40f89eb13d9d4e0e5fbc574c2b852faa063f93dce441a3373cfc2d1c855884682dfd8d09d1eb9844c73d88eb8d5a7cdfda0e4bc0d2597e5fd0a4cd5e76a03b657ef8959264bdeaf95c4412ebd4ff736ce44a00239290e698aa04485e0c342cfb76ccf27a3e45a161b8b1b534e0c46707b92c8a0080c3439fb84730924539797aad8d017c5f7e008314ed9086450d80ec2b0d7aba0861dbe37b9b9e0f58b6fdb83eec28045c5f7f1861530f47f78fc8a2b18a6bd8da0036697e8dc063e9086d115d468c934a01123adb3c66dcc236ee4aa8141888626a033c6f574ee79d9b1322e9ca1131a5984b33cc8881e6ac8ebd6ca36f3437cedcda07fc2855e6bb0f276202094dffe49f2b62f2366d9aba9db3ffe76d62bcdc29f0d80","0xf90211a06995d919b53eefa0b097d75c2a5dee2c54109a06d3b60586327fa0086437b801a05c7d7c92f9f1e49cf27c5d97b4a96302f033d42df5b1d7c013ef05031d67e567a05278417d007913a1e7d6606fb464e7b81f6cee91b6a1d250c67b3822d9fc68d8a0fba6d9cd68fe72db07af9d99e30c32502e0afb15ee9712f6781014195444b9e1a07dca25ba23f429b5960d9feb23367e2a088e50211f280118b7f1703e6d47103fa0399eb6e0d4390688f6b28df56c7ad72d6b6cbac9066110c6a727fe35cd889e9da08ef84ddaa3b70095fb5624878289744740a9f8761ef1132ba722abc977a218ffa04296811ae184892e2d5ecc18d05fc6279d6168eb0f3abb1f97d8d0a0721c12fba05c46766c579b8a0b8a0b79b84f6cd1e5dae1c53a2988883b0385daa2cf3bdf82a01a4ba17dd1b59147a321dd374a22a0d959f1a79d70132db7f1a8b89968ff6062a0f7ffc6f3921c6bccd47c862519409e63f51d39aaa215819c664b1adb48a940b0a0dc6e636385407900a649917fb772b0972d50d197e9fd5cdb853a1c98a29e6a47a0674b224cf784c59ca937bfebbdcd8dec05ddbd57400b04f5965558a0c2d2299ca0f95ce8c921c5b17ebf74563f2496a88631aa6a697bfd9e3e22b326efa453115ea0fc133bc6b9dd098933c816660df2959074f47dfc4ab3a10fd2059a2b2e0e911aa057cac15218d6013890df78eec099144ba2000e3eea73a3498d0eb9b1f733459080","0xf90211a0400aafe69a1a482277db720d12b9c0b98695f5dd78c6faf5421b3ddac50165a6a0235987542e4b37aa8e6957776c9dff11d6818797db5ad505de5e0049045c7e20a0f573b4776f8b323b7d55850300d53855cfa6fa5fe6e36ba64da6bb263fef774aa0b3a36d14d660c3492785b0f1488a2231b6d83bd51268685b95ba9267aa331fe2a0096e8c65bae8fce7d234710a1e1b8c98bd4fb2d56f8bb2eda7ef20d1cf31c7e2a059194c8bf50c2ac393c4c60a59c7ddf0c515bd9f545fc4ef212629a8b96af62aa0ffe882f4e2f1e8e49c7777f6f9b4438a9f31d4e5cefe82c96fdd3587d9a95173a00127ced7fdbdd57cd5ed8b766c9312c09e0c67a350087d22b4cc7b2d17a45479a0cfc030a250448838caa716cd2767cd1a4837b29019f474980720c94fe2ce412ea079ec358d2b4122692bf70eb73a0ddb0ff4bfeb05d503fe1acafe068e2d3d33cfa0733e2ccdc638ca3c940c566c742a1b9d58f7caaa062e8a121c07f5e3367160a8a0aa1f403798b71c67b821e6f6128cc5366bebe145ebd563714cf9972b2474814ea01b988afc628922aeed3de606a8a462093f1c0c803a563bbe178552a360bad1e1a0082741e2219024bf4e19f5b1b0643e5e885cb7dfb4cdc0a51faf5bd9f92ff9b6a03c86490fe8f0256be44b95815086d95cb62fdbc3ede63ca08d12d68f274b7fc5a03a81565e860ac32921ed4c9f4e0ace3b341c342abd030d4955f2d1e64dd81d2b80","0xf8f1a0bd9a0d9559513a6c7bf427816142d254d5a9049e9ff385f3514b50cb828951fc808080a07d37353f509c9bdc99635bd75fde71a6ef99271154ac4ffd5c437e0b951d5eaca029e3beec2f52c99a1fa73251ed64486f2766af3dcb950900679f7fd740badfdaa09b348c93803521a41bd2a754e3ea5435bb2663724cdfb70a87984458b53f03dea0904e696aceac8c89e2825e0dae8add52a9b46faef2ffbabb932e8bc1267e48ba80a0935dedba6ec5fb5b89285993c5f1be0cb77492e63e11bb38b5aca18011699eb8a06b52f587932dfb669f6cbefe35b251c6d8e6b5e8a2e1c1a7c2a452a4f2917b0d808080808080" ],"address": "0x7f0d15c7faae65896648c8273b6d7e43f58fa842","balance": "0x0","codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nonce": "0x0","storageHash": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","storageProof": [ { "key": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","proof": [ ],"value": "0x00" ]\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccountProof")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Proof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Balance"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CodeHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageProofs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"StorageProof[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"StorageProof[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Proof"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Key"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getproof"},"See also JSON RPC eth_getProof")),(0,r.kt)("h2",{id:"ethgetstorageat"},"eth.getStorageAt"),(0,r.kt)("p",null,"Returns storage data at address. storage_index"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getStorageAt(address, positionIndex, blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getStorageAt(address, positionIndex, blockParameter)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getstorageat"},"See also JSON RPC eth_getStorageAt")),(0,r.kt)("h2",{id:"ethgettransactionbyblocknumberandindex"},"eth.getTransactionByBlockNumberAndIndex"),(0,r.kt)("p",null,"Retrieves a transaction by block number and index"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getTransactionByBlockNumberAndIndex(blockParameter, positionIndex)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getTransactionByBlockNumberAndIndex(blockParameter, positionIndex)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "hash": "0xfd320a4949990929f64b52041c58a74c8ce13289b3d6853bd8073b0580aa031a",\n "nonce": "0x5b",\n "blockHash": "0xd779e1a5ce8f34544d66d219bb3e5331a7b280fae89a36d7d52813a23e1ca1e3",\n "blockNumber": "0x4dfdd8",\n "transactionIndex": "0x8",\n "from": "0xadb540569e2db497bd973c141b0b63be98461e40",\n "to": "0x074b24cef703f17fe123fa1b82081055775b7004",\n "value": "0x0",\n "gasPrice": "0x12a05f200",\n "gas": "0x927c0",\n "data": "0x428dc451000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000005d3c0f4ca5ee99f8e8f59ff9a5fab04f6a7e007f0000000000000000000000009d233a907e065855d2a9c7d4b552ea27fb2e5a36000000000000000000000000cbe56b00d173a26a5978ce90db2e33622fd95a28",\n "input": "0x428dc451000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000005d3c0f4ca5ee99f8e8f59ff9a5fab04f6a7e007f0000000000000000000000009d233a907e065855d2a9c7d4b552ea27fb2e5a36000000000000000000000000cbe56b00d173a26a5978ce90db2e33622fd95a28",\n "type": "0x0",\n "v": "0x2e",\n "s": "0x37b90a929884787df717c87258f0434e2f115ce2fbb4bfc230322112fa9d5bbc",\n "r": "0x5222eff9e16b5c3e9e8901d9c45fc8e0f9cf774e8a56546a504025ef67ceefec"\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_gettransactionbyblocknumberandindex"},"See also JSON RPC eth_getTransactionByBlockNumberAndIndex")),(0,r.kt)("h2",{id:"ethgettransactionbyhash"},"eth.getTransactionByHash"),(0,r.kt)("p",null,"Retrieves a transaction by hash"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getTransactionByHash(transactionHash)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'eth.getTransactionByHash("0xabca23910646013d608ec671de099447ab60b2b7159ad8319c3c088e8d9ea0fa")\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "hash": "0xabca23910646013d608ec671de099447ab60b2b7159ad8319c3c088e8d9ea0fa",\n "nonce": "0x1a",\n "blockHash": "0xcb6756f69e0469acd5e5bb77966be580786ec2c11de85c9ddfd75257010e34f8",\n "blockNumber": "0x4dfbc7",\n "transactionIndex": "0xb",\n "from": "0xe1e7ab1c643dbe5b24739fdf2a5c7c193b54dd99",\n "to": "0x0b10e304088b2ba2b2acfd2f72573faad31a13a5",\n "value": "0x0",\n "gasPrice": "0x2540be400",\n "gas": "0xb4a4",\n "data": "0x095ea7b300000000000000000000000092c1576845703089cf6c0788379ed81f75f45dd500000000000000000000000000000000000000000000000000000002540be400",\n "input": "0x095ea7b300000000000000000000000092c1576845703089cf6c0788379ed81f75f45dd500000000000000000000000000000000000000000000000000000002540be400",\n "type": "0x0",\n "v": "0x2d",\n "s": "0x496d72d435ead8a8a9a865b14d6a102c1a9f848681d050dbbf11c522c612235",\n "r": "0xc8350e831203fecc8bff41f5cf858ac1d121e4b4d9e59c1137cc9440516ca9fd"\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_gettransactionbyhash"},"See also JSON RPC eth_getTransactionByHash")),(0,r.kt)("h2",{id:"ethgettransactioncount"},"eth.getTransactionCount"),(0,r.kt)("p",null,"Returns account nonce (number of trnsactions from the account since genesis) at the given block number"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getTransactionCount(address, blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getTransactionCount(address, blockParameter)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x3e\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_gettransactioncount"},"See also JSON RPC eth_getTransactionCount")),(0,r.kt)("h2",{id:"ethgettransactionreceipt"},"eth.getTransactionReceipt"),(0,r.kt)("p",null,"Retrieves a transaction receipt by tx hash"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getTransactionReceipt(txHashData)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txHashData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ReceiptForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'eth.getTransactionReceipt(["0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71"])\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "transactionHash": "0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71",\n "transactionIndex": "0x7",\n "blockHash": "0x42def051b21038905cd2a2bc28d460a94df2249466847f0e1bcb4be4eb21891a",\n "blockNumber": "0x4e3f39",\n "cumulativeGasUsed": "0x62c9d",\n "gasUsed": "0xe384",\n "effectiveGasPrice": "0x12a05f200",\n "from": "0x0afe0a94415e8974052e7e6cfab19ee1c2ef4f69",\n "to": "0x19e8c84d4943e58b035626b064cfc76ee13ee6cb",\n "contractAddress": null,\n "logs": [\n {\n "removed": false,\n "logIndex": "0x0",\n "transactionIndex": "0x7",\n "transactionHash": "0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71",\n "blockHash": "0x42def051b21038905cd2a2bc28d460a94df2249466847f0e1bcb4be4eb21891a",\n "blockNumber": "0x4e3f39",\n "address": "0x2ac3c1d3e24b45c6c310534bc2dd84b5ed576335",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "topics": [\n "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",\n "0x00000000000000000000000019e8c84d4943e58b035626b064cfc76ee13ee6cb",\n "0x00000000000000000000000028078300a459a9e136f872285654cdc74463041e"\n ]\n },\n {\n "removed": false,\n "logIndex": "0x1",\n "transactionIndex": "0x7",\n "transactionHash": "0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71",\n "blockHash": "0x42def051b21038905cd2a2bc28d460a94df2249466847f0e1bcb4be4eb21891a",\n "blockNumber": "0x4e3f39",\n "address": "0x19e8c84d4943e58b035626b064cfc76ee13ee6cb",\n "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007735940000000000000000000000000000000000000000000000000000000000000000000",\n "topics": [\n "0x950494fc3642fae5221b6c32e0e45765c95ebb382a04a71b160db0843e74c99f",\n "0x0000000000000000000000000afe0a94415e8974052e7e6cfab19ee1c2ef4f69",\n "0x00000000000000000000000028078300a459a9e136f872285654cdc74463041e",\n "0x0000000000000000000000000afe0a94415e8974052e7e6cfab19ee1c2ef4f69"\n ]\n }\n ],\n "logsBloom": "0x00000000000000000000000000000000000000000000000020000000000000800000000000000000000400000000000000000000000000000000000000002000000000000000000000000008000000000000000000000000000000000000000000000002002000000000000000000000000000000000000000000812000000000000000000000000000001000000000000000000000008000400008000000000000000000000000000000000000000000000000000000000800000000000000000000002000000000000000000000000000000000000100000000000000000002000000000000000000000000010000000000000000000000400000000020000",\n "status": "0x1",\n "type": "0x0"\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ReceiptForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CumulativeGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EffectiveGasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ContractAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Logs"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"LogEntryForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Root"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Status"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"LogEntryForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Removed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Topics"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Keccak[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_gettransactionreceipt"},"See also JSON RPC eth_getTransactionReceipt")),(0,r.kt)("h2",{id:"ethgetunclebyblockhashandindex"},"eth.getUncleByBlockHashAndIndex"),(0,r.kt)("p",null,"Retrieves an uncle block header by block hash and uncle index"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getUncleByBlockHashAndIndex(blockHashData, positionIndex)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockHashData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getUncleByBlockHashAndIndex(blockHashData, positionIndex)\n"))),(0,r.kt)(d.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Difficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Miner"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MixHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ParentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sha3Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signature"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Step"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timestamp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transactions"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Withdrawals"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WithdrawalsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExcessDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getunclebyblockhashandindex"},"See also JSON RPC eth_getUncleByBlockHashAndIndex")),(0,r.kt)("h2",{id:"ethgetunclebyblocknumberandindex"},"eth.getUncleByBlockNumberAndIndex"),(0,r.kt)("p",null,"Retrieves an uncle block header by block number and uncle index"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getUncleByBlockNumberAndIndex(blockParameter, positionIndex)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"positionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.getUncleByBlockNumberAndIndex(blockParameter, positionIndex)\n"))),(0,r.kt)(d.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Difficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogsBloom"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Bloom Object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Miner"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MixHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ParentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ReceiptsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sha3Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signature"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Size"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Step"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TotalDifficulty"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Timestamp"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Transactions"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Uncles"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Withdrawals"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WithdrawalsRoot"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DataGasUsed"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExcessDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getunclebyblocknumberandindex"},"See also JSON RPC eth_getUncleByBlockNumberAndIndex")),(0,r.kt)("h2",{id:"ethgetunclecountbyblocknumber"},"eth.getUncleCountByBlockNumber"),(0,r.kt)("p",null,"Returns number of uncles in the block by block number"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.getUncleCountByBlockNumber(blockParameter)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'eth.getUncleCountByBlockNumber(["5127400"])\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x0\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_getunclecountbyblocknumber"},"See also JSON RPC eth_getUncleCountByBlockNumber")),(0,r.kt)("h2",{id:"ethnewpendingtransactionfilter"},"eth.newPendingTransactionFilter"),(0,r.kt)("p",null,"Creates an update filter"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.newPendingTransactionFilter()"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.newPendingTransactionFilter()\n"))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x1\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_newpendingtransactionfilter"},"See also JSON RPC eth_newPendingTransactionFilter")),(0,r.kt)("h2",{id:"ethpendingtransactions"},"eth.pendingTransactions"),(0,r.kt)("p",null,"Returns the pending transactions list"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.pendingTransactions"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.pendingTransactions\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"[ ]\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,'{% tab title="Objects in eth_pendingTransactions" %}'),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_pendingtransactions"},"See also JSON RPC eth_pendingTransactions")),(0,r.kt)("h2",{id:"ethprotocolversion"},"eth.protocolVersion"),(0,r.kt)("p",null,"Returns ETH protocol version"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.protocolVersion"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.protocolVersion\n"))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x41\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_protocolversion"},"See also JSON RPC eth_protocolVersion")),(0,r.kt)("h2",{id:"ethsendeth"},"eth.sendEth"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.sendEth(from, to, amountInEth)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"from"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"to"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"amountInEth"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of eth.sendEth"',title:'"Example',request:!0,of:!0,'eth.sendEth"':!0},"eth.sendEth(from, to, amountInEth)\n")),(0,r.kt)("h2",{id:"ethsendrawtransaction"},"eth.sendRawTransaction"),(0,r.kt)("p",null,"Send a raw transaction to the tx pool and broadcasting"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.sendRawTransaction(transaction)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"transaction"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'eth.sendRawTransaction(["0xf86380843b9aca0082520894b943b13292086848d8180d75c73361107920bb1a80802ea0385656b91b8f1f5139e9ba3449b946a446c9cfe7adb91b180ddc22c33b17ac4da01fe821879d386b140fd8080dcaaa98b8c709c5025c8c4dea1334609ebac41b6c"])\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x7a5a94d5b5e3ce017ce2c2022f02ec5db10611c43695c3256861bdb19317ab0e\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_sendrawtransaction"},"See also JSON RPC eth_sendRawTransaction")),(0,r.kt)("h2",{id:"ethsendtransaction"},"eth.sendTransaction"),(0,r.kt)("p",null,"Send a transaction to the tx pool and broadcasting"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.sendTransaction(rpcTx)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"rpcTx"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'eth.sendTransaction([{"From": "0xc2208fe87805279b03c1a8a78d7ee4bfdb0e48ee", "Gas": "21000","GasPrice": "20000000000", "Nonce": "23794", "To": "0x2d44c0e097f6cd0f514edac633d82e01280b4a5c" } ])\n'))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760\n"))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_sendtransaction"},"See also JSON RPC eth_sendTransaction")),(0,r.kt)("h2",{id:"ethsendwei"},"eth.sendWei"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.sendWei(from, to, amountInWei)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"from"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"to"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"amountInWei"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of eth.sendWei"',title:'"Example',request:!0,of:!0,'eth.sendWei"':!0},"eth.sendWei(from, to, amountInWei)\n")),(0,r.kt)("h2",{id:"ethsyncing"},"eth.syncing"),(0,r.kt)("p",null,"Returns syncing status"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"eth.syncing()"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"SyncingResult object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"eth.syncing()\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "isSyncing": true,"startingBlock": "0x0","currentBlock": "0x0","highestBlock": "0x4df8a4" },"id": 1}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SyncingResult")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsSyncing"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StartingBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CurrentBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"HighestBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SyncMode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"SyncMode object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SyncMode")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type")))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/eth#eth_syncing"},"See also JSON RPC eth_syncing")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a42fe60f.a848e27a.js b/assets/js/a42fe60f.a848e27a.js new file mode 100644 index 000000000..149371151 --- /dev/null +++ b/assets/js/a42fe60f.a848e27a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8785],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,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 o(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},h=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,h=i(e,["components","mdxType","originalType","parentName"]),u=c(n),p=r,m=u["".concat(s,".").concat(p)]||u[p]||d[p]||o;return n?a.createElement(m,l(l({ref:t},h),{},{components:n})):a.createElement(m,l({ref:t},h))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=p;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:r,l[1]=i;for(var c=2;c<o;c++)l[c]=n[c];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(7294),r=n(6010);const o={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:n,className:l}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(o.tabItem,l),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var a=n(7462),r=n(7294),o=n(6010),l=n(2466),i=n(6550),s=n(1980),c=n(7392),h=n(12);function u(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function d(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??u(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function m(e){let{queryString:t=!1,groupId:n}=e;const a=(0,i.k6)(),o=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,s._X)(o),(0,r.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(a.location.search);t.set(o,e),a.replace({...a.location,search:t.toString()})}),[o,a])]}function k(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,o=d(e),[l,i]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:o}))),[s,c]=m({queryString:n,groupId:a}),[u,k]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,h.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&o.set(e)}),[n,o])]}({groupId:a}),g=(()=>{const e=s??u;return p({value:e,tabValues:o})?e:null})();(0,r.useLayoutEffect)((()=>{g&&i(g)}),[g]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);i(e),c(e),k(e)}),[c,k,o]),tabValues:o}}var g=n(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function f(e){let{className:t,block:n,selectedValue:i,selectValue:s,tabValues:c}=e;const h=[],{blockElementScrollPositionUntilNextRender:u}=(0,l.o5)(),d=e=>{const t=e.currentTarget,n=h.indexOf(t),a=c[n].value;a!==i&&(u(t),s(a))},p=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=h.indexOf(e.currentTarget)+1;t=h[n]??h[0];break}case"ArrowLeft":{const n=h.indexOf(e.currentTarget)-1;t=h[n]??h[h.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":n},t)},c.map((e=>{let{value:t,label:n,attributes:l}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>h.push(e),onKeyDown:p,onClick:d},l,{className:(0,o.Z)("tabs__item",b.tabItem,l?.className,{"tabs__item--active":i===t})}),n??t)})))}function y(e){let{lazy:t,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},o.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function v(e){const t=k(e);return r.createElement("div",{className:(0,o.Z)("tabs-container",b.tabList)},r.createElement(f,(0,a.Z)({},e,t)),r.createElement(y,(0,a.Z)({},e,t)))}function w(e){const t=(0,g.Z)();return r.createElement(v,(0,a.Z)({key:String(t)},e))}},2134:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>s,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var a=n(7462),r=(n(7294),n(3905)),o=n(4866),l=n(5162);const i={},s="Monitoring Node's Health",c={unversionedId:"monitoring/monitoring-node-health",id:"monitoring/monitoring-node-health",title:"Monitoring Node's Health",description:"Nethermind has a pre-packed Nethermind.HealthChecks.dll plugin that allows you to monitor your Nethermind node better.",source:"@site/docs/04-monitoring/monitoring-node-health.md",sourceDirName:"04-monitoring",slug:"/monitoring/monitoring-node-health",permalink:"/docs/monitoring/monitoring-node-health",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/monitoring-node-health.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"TxPool",permalink:"/docs/monitoring/metrics-explanation/txpool"},next:{title:"For Developers",permalink:"/docs/category/for-developers"}},h={},u=[{value:"Enabling and configuring Health Checks",id:"enabling-and-configuring-health-checks",level:2},{value:"Enabling Health Checks without UI ",id:"enabling-health-checks-without-ui-",level:4},{value:"Enabling Health Checks UI",id:"enabling-health-checks-ui",level:4},{value:"Enabling Slack reports",id:"enabling-slack-reports",level:4},{value:"Consensus Client health",id:"consensus-client-health",level:4},{value:"health_nodeStatus",id:"health_nodestatus",level:4},{value:"Monitoring available storage space",id:"monitoring-available-storage-space",level:4},{value:"HealthChecks for producing and processing blocks",id:"healthchecks-for-producing-and-processing-blocks",level:4}],d={toc:u},p="wrapper";function m(e){let{components:t,...i}=e;return(0,r.kt)(p,(0,a.Z)({},d,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"monitoring-nodes-health"},"Monitoring Node's Health"),(0,r.kt)("p",null,"Nethermind has a pre-packed ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.HealthChecks.dll")," plugin that allows you to monitor your Nethermind node better.\nIt leverages the power\nof ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks"},"AspNetCore.Diagnostics.HealthChecks"),". It simply adds\nan",(0,r.kt)("inlineCode",{parentName:"p"},"/health"),"endpoint to the JSON RPC service which can be used to check the Nethermind's ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("strong",{parentName:"em"},"liveness")," -")," verify if the\nnode is ",(0,r.kt)("strong",{parentName:"p"},"synced")," and has ",(0,r.kt)("strong",{parentName:"p"},"at least one peer.")," Useful when you don't want to query the node before it's able to\nprovide you data available only for fully synced nodes like ",(0,r.kt)("inlineCode",{parentName:"p"},"eth_getBalance"),"."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.HealthChecks.dll"),"plugin will be automatically loaded on Nethermind start."),(0,r.kt)("h2",{id:"enabling-and-configuring-health-checks"},"Enabling and configuring Health Checks"),(0,r.kt)("p",null,"The health checks need to be additionally enabled which can be done either through ",(0,r.kt)("inlineCode",{parentName:"p"},"--HealthChecks.*")," flags or by adding\na ",(0,r.kt)("inlineCode",{parentName:"p"},'"HealthChecks"')," section to the config file."," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="HealthChecks config section example"',title:'"HealthChecks',config:!0,section:!0,'example"':!0},' "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "WebhooksUri": "https://slack.webhook",\n "UIEnabled": true,\n "PollingInterval": 10,\n "Slug": "/api/health"\n }\n')),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"JSON RPC Service needs to be enabled in order for health checks to work ",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Enabled true"))),(0,r.kt)("p",null,"Each configuration option is described ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/configuration/healthchecks"},"here"),"."),(0,r.kt)("h4",{id:"enabling-health-checks-without-ui-"},"Enabling Health Checks without UI"," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Runner --HealthChecks.Enabled true\n")),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"health")," endpoint is now available at ",(0,r.kt)("inlineCode",{parentName:"p"},"localhost:8545/health")," by default (if your ",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Port")," is ",(0,r.kt)("inlineCode",{parentName:"p"},"8545"),").\nThe ",(0,r.kt)("inlineCode",{parentName:"p"},"health")," endpoint can be configured via ",(0,r.kt)("inlineCode",{parentName:"p"},"--HealthChecks.Slug")," parameter e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"--HealthChecks.Slug /api/health"),". We\ncan if it is working with ",(0,r.kt)("inlineCode",{parentName:"p"},"curl"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'// Request\ncurl localhost:8545/health\n\n// Example of response for Unhealthy node\n{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}\n\n// Example of response for Healthy node\n{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}\n')),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Unhealthy")," returns ",(0,r.kt)("strong",{parentName:"li"},"503")," (Service Unavailable) status code"))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Healthy")," returns ",(0,r.kt)("strong",{parentName:"li"},"200")," status code"))),(0,r.kt)("h4",{id:"enabling-health-checks-ui"},"Enabling Health Checks UI"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true\n")),(0,r.kt)("p",null,"Enabling UI will expose an additional endpoint ",(0,r.kt)("inlineCode",{parentName:"p"},"/healthchecks-ui"),"and will allow seeing node's health on a nice UI. To\nview the UI simply go to ",(0,r.kt)("inlineCode",{parentName:"p"},"http://localhost:8545/healthchecks-ui"),"."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Unhealthy status reported on UI page",src:n(6355).Z,width:"1187",height:"418"})),(0,r.kt)("h4",{id:"enabling-slack-reports"},"Enabling Slack reports"),(0,r.kt)("p",null,"We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass\nthe ",(0,r.kt)("inlineCode",{parentName:"p"},"--HealthChecks.WebhooksEnabled true")," and add the ",(0,r.kt)("inlineCode",{parentName:"p"},"--HealthChecks.WebhooksUri")," which can be found in your Slack app\nconfiguration."),(0,r.kt)("pre",{class:"language-bash"},(0,r.kt)("code",{class:"lang-bash"},(0,r.kt)("strong",null,"./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/"))),(0,r.kt)("p",null,"If your node will be ",(0,r.kt)("strong",{parentName:"p"},"Unhealthy")," you should receive a message similar to this:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Unhealthy",src:n(2367).Z,width:"690",height:"240"})),(0,r.kt)("p",null,"with description of why the node is unhealthy, node's name and information about the machine on which the node is\nrunning.\\\nWhen it becomes ",(0,r.kt)("strong",{parentName:"p"},"Healthy")," (",(0,r.kt)("strong",{parentName:"p"},"synced")," and with ",(0,r.kt)("strong",{parentName:"p"},"peers"),") you should receive:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Healthy",src:n(7384).Z,width:"492",height:"118"})),(0,r.kt)("h4",{id:"consensus-client-health"},"Consensus Client health"),(0,r.kt)("p",null,"This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that\nthere is something wrong with CL<->Nethermind communication. Check more about setting up Nethermind and\nCL ",(0,r.kt)("a",{parentName:"p",href:"/docs/fundamentals/running-nethermind-post-merge"},"here"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.\n")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Note that Consensus Client is required for normal node operations.")),(0,r.kt)("h4",{id:"health_nodestatus"},"health","_","nodeStatus"),(0,r.kt)("p",null,"Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, ",(0,r.kt)("inlineCode",{parentName:"p"},"HealthChecks.Enabled")," should be\nset to true."),(0,r.kt)(o.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }\n'))),(0,r.kt)(l.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "jsonrpc": "2.0",\n "result": {\n "healthy": false,\n "messages": [\n "Sync degraded",\n "No messages from CL"\n ],\n "errors": [\n "SyncDegraded",\n "ClUnavailable"\n ],\n "isSyncing": true\n },\n "id": 67\n}\n')))),(0,r.kt)("h4",{id:"monitoring-available-storage-space"},"Monitoring available storage space"),(0,r.kt)("p",null,"Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to\nconfigure database location. There are two new configuration options available:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--HealthChecks.LowStorageSpaceWarningThreshold")," - Percentage of free disk space below which a warning will be\ndisplayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning\n5% of free disk space."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--HealthChecks.LowStorageSpaceShutdownThreshold")," - Percentage of available disk space below which node will shutdown\nto avoid database corruption. Default value is 1 - meaning 1% of free disk space.")),(0,r.kt)("pre",null,(0,r.kt)("code",null,(0,r.kt)("strong",null,"./Nethermind.Runner --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1"))),(0,r.kt)("h4",{id:"healthchecks-for-producing-and-processing-blocks"},"HealthChecks for producing and processing blocks"),(0,r.kt)("p",null,"There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The\nnode will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below\nconfig as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically,\nwe will be waiting 45 seconds for a newly produced block."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="HealthChecks config section example"',title:'"HealthChecks',config:!0,section:!0,'example"':!0},'\n "HealthChecks": {\n "Enabled": true,\n "WebhooksEnabled": true,\n "UIEnabled": true,\n "Slug": "/api/health",\n "MaxIntervalWithoutProcessedBlock ": 15,\n "MaxIntervalWithoutProducedBlock": 45\n }\n')),(0,r.kt)("p",null,"If those fields are not set in a config, application will try to use them based on seal engine specification. If there\nis infinite time, unhealthy status can still be reported if processing or producing threads stopped."))}m.isMDXComponent=!0},7384:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(46)-5eaf72852b3e686e71865323e9801102.png"},6355:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(76)-09c7ba2b07d07480a303268d261ffd16.png"},2367:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/unhealthy-98cb6ab004e2ecb6edcbec2e6d03edea.png"}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.2771f066.js b/assets/js/a6aa9e1f.2771f066.js new file mode 100644 index 000000000..a669058fb --- /dev/null +++ b/assets/js/a6aa9e1f.2771f066.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3089],{46:(e,t,a)=>{a.r(t),a.d(t,{default:()=>u});var n=a(7294),l=a(6010),r=a(2263),i=a(1944),o=a(5281),s=a(9058),m=a(1158),c=a(197),g=a(9985);function p(e){const{metadata:t}=e,{siteConfig:{title:a}}=(0,r.Z)(),{blogDescription:l,blogTitle:o,permalink:s}=t,m="/"===s?a:o;return n.createElement(n.Fragment,null,n.createElement(i.d,{title:m,description:l}),n.createElement(c.Z,{tag:"blog_posts_list"}))}function d(e){const{metadata:t,items:a,sidebar:l}=e;return n.createElement(s.Z,{sidebar:l},n.createElement(g.Z,{items:a}),n.createElement(m.Z,{metadata:t}))}function u(e){return n.createElement(i.FG,{className:(0,l.Z)(o.k.wrapper.blogPages,o.k.page.blogListPage)},n.createElement(p,e),n.createElement(d,e))}},1158:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7294),l=a(5999),r=a(2244);function i(e){const{metadata:t}=e,{previousPage:a,nextPage:i}=t;return n.createElement("nav",{className:"pagination-nav","aria-label":(0,l.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},a&&n.createElement(r.Z,{permalink:a,title:n.createElement(l.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")}),i&&n.createElement(r.Z,{permalink:i,title:n.createElement(l.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries"),isNext:!0}))}},9985:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7294),l=a(9460),r=a(390);function i(e){let{items:t,component:a=r.Z}=e;return n.createElement(n.Fragment,null,t.map((e=>{let{content:t}=e;return n.createElement(l.n,{key:t.metadata.permalink,content:t},n.createElement(a,null,n.createElement(t,null)))})))}}}]); \ No newline at end of file diff --git a/assets/js/a7023ddc.94ca480e.js b/assets/js/a7023ddc.94ca480e.js new file mode 100644 index 000000000..7fc4570d1 --- /dev/null +++ b/assets/js/a7023ddc.94ca480e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1713],{3457:l=>{l.exports=JSON.parse('[{"label":"facebook","permalink":"/blog/tags/facebook","count":1},{"label":"hello","permalink":"/blog/tags/hello","count":2},{"label":"docusaurus","permalink":"/blog/tags/docusaurus","count":4},{"label":"hola","permalink":"/blog/tags/hola","count":1}]')}}]); \ No newline at end of file diff --git a/assets/js/a7434565.cbadb245.js b/assets/js/a7434565.cbadb245.js new file mode 100644 index 000000000..7efbc74e0 --- /dev/null +++ b/assets/js/a7434565.cbadb245.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7645],{5745:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a80da1cf.80cfa478.js b/assets/js/a80da1cf.80cfa478.js new file mode 100644 index 000000000..62215c7cb --- /dev/null +++ b/assets/js/a80da1cf.80cfa478.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3205],{4863:s=>{s.exports=JSON.parse('{"label":"docusaurus","permalink":"/blog/tags/docusaurus","allTagsPath":"/blog/tags","count":4}')}}]); \ No newline at end of file diff --git a/assets/js/aa0f377f.638bd835.js b/assets/js/aa0f377f.638bd835.js new file mode 100644 index 000000000..b9323d990 --- /dev/null +++ b/assets/js/aa0f377f.638bd835.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3374],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>h});var i=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?l(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(e,n){if(null==e)return{};var t,i,r=function(e,n){if(null==e)return{};var t,i,r={},l=Object.keys(e);for(i=0;i<l.length;i++)t=l[i],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)t=l[i],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=i.createContext({}),p=function(e){var n=i.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},c=function(e){var n=p(e.components);return i.createElement(s.Provider,{value:n},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},m=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(t),m=r,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||l;return t?i.createElement(h,a(a({ref:n},c),{},{components:t})):i.createElement(h,a({ref:n},c))}));function h(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var l=t.length,a=new Array(l);a[0]=m;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o[u]="string"==typeof e?e:r,a[1]=o;for(var p=2;p<l;p++)a[p]=t[p];return i.createElement.apply(null,a)}return i.createElement.apply(null,t)}m.displayName="MDXCreateElement"},9203:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var i=t(7462),r=(t(7294),t(3905));const l={description:"Pipelines were added to the Nethermind code base in order to make building plugins around blockchain analysis faster and easier."},a="Pipeline",o={unversionedId:"nethermind-utilities/pipeline",id:"nethermind-utilities/pipeline",title:"Pipeline",description:"Pipelines were added to the Nethermind code base in order to make building plugins around blockchain analysis faster and easier.",source:"@site/docs/06-nethermind-utilities/pipeline.md",sourceDirName:"06-nethermind-utilities",slug:"/nethermind-utilities/pipeline",permalink:"/docs/nethermind-utilities/pipeline",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/pipeline.md",tags:[],version:"current",frontMatter:{description:"Pipelines were added to the Nethermind code base in order to make building plugins around blockchain analysis faster and easier."},sidebar:"tutorialSidebar",previous:{title:"web3",permalink:"/docs/nethermind-utilities/cli/web3"},next:{title:"Resources",permalink:"/docs/category/resources"}},s={},p=[{value:"Please note that the pipeline source code is still a work in progress and there will be significant changes in the coming weeks!",id:"please-note-that-the-pipeline-source-code-is-still-a-work-in-progress-and-there-will-be-significant-changes-in-the-coming-weeks",level:3},{value:"Pipeline items",id:"pipeline-items",level:2},{value:"Publishers",id:"publishers",level:2},{value:"Building pipeline",id:"building-pipeline",level:2}],c={toc:p},u="wrapper";function d(e){let{components:n,...t}=e;return(0,r.kt)(u,(0,i.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"pipeline"},"Pipeline"),(0,r.kt)("h3",{id:"please-note-that-the-pipeline-source-code-is-still-a-work-in-progress-and-there-will-be-significant-changes-in-the-coming-weeks"},"Please note that the pipeline source code is still a work in progress and there will be significant changes in the coming weeks!"),(0,r.kt)("p",null,"Nethermind under ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Pipeline")," project provides couple of interfaces and classes used in creating pipelines."),(0,r.kt)("h2",{id:"pipeline-items"},"Pipeline items"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IPipelineElement")," - base building block of the pipeline."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IPipelineElement<TOut>")," - generic interface used for emitting data of type ",(0,r.kt)("inlineCode",{parentName:"li"},"TOut"),". to the next element ","(","most of the\ntime this is the first element in the collection",")","."),(0,r.kt)("li",{parentName:"ul"},"IPipelineElement","<","TIn, TOut",">"," - interface used for both emitting and subscribing to the data from the previous\nblock, so ",(0,r.kt)("inlineCode",{parentName:"li"},"TIn")," is the type of data from the previous block and ",(0,r.kt)("inlineCode",{parentName:"li"},"TOut")," is the type of data that the element wants to\ngive to the next element."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IPipeline")," - collection of ",(0,r.kt)("inlineCode",{parentName:"li"},"IPipelineElement")," used to store our pipeline in the memory."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IPipelineBuilder<TSource, TOutput>")," - when we want to create our pipeline the fastest way will be to use\nimplementation of this interface ","(","implemented in ",(0,r.kt)("inlineCode",{parentName:"li"},"PipelineBuilder.cs"),")",". Builder collects all of the elements we want\nto create the pipeline with and creates the flow of the data between them. Keep in mind that once the pipeline is\ncreated it's immutable.")),(0,r.kt)("h2",{id:"publishers"},"Publishers"),(0,r.kt)("p",null,"Publishers are just classes implementing ",(0,r.kt)("inlineCode",{parentName:"p"},"IPipelineElement<TIn, TOut>")," ","(","so they are able to subscribe and emit data",")","\nwith the additional functionality of publishing the data to either WebSockets or as logs to the file. We add them to the\npipeline the same way as normal elements - by using ",(0,r.kt)("inlineCode",{parentName:"p"},"PipelineBuilder")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"WebSocketsPublisher"),(0,r.kt)("li",{parentName:"ul"},"LogPublisher")),(0,r.kt)("h2",{id:"building-pipeline"},"Building pipeline"),(0,r.kt)("p",null,"We will build a Nethermind plugin\n","(","see ",(0,r.kt)("a",{parentName:"p",href:"/docs/for-developers/plugins"},"nethermind plugins"),") which observes newly created\nblocks and see whether there are any transactions to a specific contract address."),(0,r.kt)("p",null,"Firstly we need to create our pipeline elements. With this case there will only be 3 of them - source, processor and\npublisher but there is nothing standing in the way in adding more elements."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-csharp"}," public class NewTransactionsSource<TIn> : IPipelineElement<TIn> where TIn : Transaction\n {\n private Block _block;\n private IBlockProcessor _blockProcessor;\n\n public Action<TIn> Emit { private get; set; }\n\n public NewTransactionsSource(IBlockProcessor blockProcessor)\n {\n _blockProcessor = blockProcessor; \n\n \n }\n\n public void OnNewBlockProcessed(BlockProcessedEventArgs args)\n {\n var block = args.Block;\n\n foreach(var tx in block.Transactions)\n {\n Emit((TIn)tx);\n }\n }\n }\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-csharp"},' public class TransactionProcessorElement<TIn, TOut> : IPipelineElement<TIn, TOut>\n where TIn : Transaction\n where TOut : TIn\n {\n private Address _address = new Address("0xFca59Cd816aB1eaD66534D82bc21E7515cE441CF");\n public Action<TOut> Emit { private get; set; }\n\n public void SubscribeToData(TIn data)\n {\n if(data.To == _address)\n {\n Emit((TOut)data);\n }\n }\n }\n')),(0,r.kt)("p",null,"After that create plugin file and build your pipeline with ",(0,r.kt)("inlineCode",{parentName:"p"},"IPipelineBuilder")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-csharp"},' public class PipelineExamplePlugin : INethermindPlugin\n {\n public string Name => "Pipeline example";\n public string Description => "Example on how to deal with Nethermind\'s pipeline";\n public string Author => "Nethermind team";\n\n private INethermindApi _api;\n private IPipeline _pipeline;\n\n public ValueTask DisposeAsync()\n {\n return ValueTask.CompletedTask;\n }\n\n public Task Init(INethermindApi nethermindApi)\n {\n _api = nethermindApi;\n \n var sourceElement = new NewTransactionsSource<Transaction>(_api.MainBlockProcessor);\n var processorElement = new TransactionProcessorElement<Transaction, Transaction>();\n var webSocketsPublisher = new WebSocketsPublisher<Transaction, Transaction>("example-publisher", _api.EthereumJsonSerializer);\n _api.WebSocketsManager.AddModule(webSocketsPublisher);\n\n var pipelineBuilder = new PipelineBuilder<Transaction, Transaction>(sourceElement);\n _pipeline = pipelineBuilder.AddElement(processorElement).AddElement(webSocketsPublisher).Build();\n\n return Task.CompletedTask;\n }\n\n public Task InitNetworkProtocol()\n {\n return Task.CompletedTask;\n }\n\n public Task InitRpcModules()\n {\n return Task.CompletedTask;\n }\n }\n')),(0,r.kt)("p",null,"With that, all you need is to add the plugin to your node and watch how transactions are being streamed through web\nsockets."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/addfe087.aaf01e20.js b/assets/js/addfe087.aaf01e20.js new file mode 100644 index 000000000..f78dd4e21 --- /dev/null +++ b/assets/js/addfe087.aaf01e20.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6011],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>f});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 i(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},m=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),d=p(n),u=r,f=d["".concat(s,".").concat(u)]||d[u]||c[u]||i;return n?a.createElement(f,l(l({ref:t},m),{},{components:n})):a.createElement(f,l({ref:t},m))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:r,l[1]=o;for(var p=2;p<i;p++)l[p]=n[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},8707:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const i={description:"Nethermind C# Coding Style"},l="Coding Style",o={unversionedId:"for-developers/coding-style",id:"for-developers/coding-style",title:"Coding Style",description:"Nethermind C# Coding Style",source:"@site/docs/05-for-developers/coding-style.md",sourceDirName:"05-for-developers",slug:"/for-developers/coding-style",permalink:"/docs/for-developers/coding-style",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/05-for-developers/coding-style.md",tags:[],version:"current",frontMatter:{description:"Nethermind C# Coding Style"},sidebar:"tutorialSidebar",previous:{title:"Building from source",permalink:"/docs/for-developers/building-nethermind"},next:{title:"Custom Analytic Tools",permalink:"/docs/for-developers/custom-analytic-tools"}},s={},p=[{value:"General Rules:",id:"general-rules",level:2},{value:"Naming:",id:"naming",level:2}],m={toc:p},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"coding-style"},"Coding Style"),(0,r.kt)("h2",{id:"general-rules"},"General Rules:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We use four spaces for indentation (not tabs).")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Do not use Hungarian Notation!")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Avoid more than one empty line at any time. For example, do not have two blank lines between members of a type.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"If a file happens to differ in style from these guidelines (e.g. private members are named m","_","member rather than\n","_","member), the existing style in that file takes precedence.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"We only use ",(0,r.kt)("inlineCode",{parentName:"p"},"var")," when it's obvious what the variable type is (e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"var stream = new FileStream(...)"),"\nnot ",(0,r.kt)("inlineCode",{parentName:"p"},"var stream = OpenStandardInput()"),").")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Fields should be specified at the top within type declarations.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"When using a single-statement ",(0,r.kt)("inlineCode",{parentName:"p"},"if"),", we follow these conventions:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Using braces is always accepted, and required if any block of an if/else if/.../else compound statement uses braces\nor if a single statement body spans multiple lines."),(0,r.kt)("li",{parentName:"ul"},"Braces may be omitted only if the body of every block associated with an if/else if/.../else compound statement is\nplaced on a single line."," "))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Avoid complex conditions in ternary operators.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Avoid declaring methods with more than 5 parameters. Consider refactoring this code.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Try to replace large parameter-sets (> than 5 parameters) with one or more ",(0,r.kt)("inlineCode",{parentName:"p"},"class")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"struct")," parameters \u2013"),(0,r.kt)("p",{parentName:"li"},"especially when used in multiple method signatures."," ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Always call ",(0,r.kt)("inlineCode",{parentName:"p"},"Close()")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"Dispose()")," on classes that offer it."," ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Wrap instantiation of ",(0,r.kt)("inlineCode",{parentName:"p"},"IDisposable")," objects with a \u201c",(0,r.kt)("inlineCode",{parentName:"p"},"using"),"\u201d statement to ensure that Dispose() is"),(0,r.kt)("p",{parentName:"li"},"automatically called.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Always prefer aggregation over inheritance."," "))),(0,r.kt)("h2",{id:"naming"},"Naming:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"We use ",(0,r.kt)("inlineCode",{parentName:"li"},"camelCase")," for local variables and parameters."),(0,r.kt)("li",{parentName:"ul"},"We use ",(0,r.kt)("inlineCode",{parentName:"li"},"_camelCase")," for internal and private fields and use readonly where possible. Prefix internal and private\ninstance fields with ",(0,r.kt)("inlineCode",{parentName:"li"},"_"),", and thread static fields with ",(0,r.kt)("inlineCode",{parentName:"li"},"t_"),"."),(0,r.kt)("li",{parentName:"ul"},"We use ",(0,r.kt)("inlineCode",{parentName:"li"},"snake_case")," for test method names."),(0,r.kt)("li",{parentName:"ul"},"We use ",(0,r.kt)("inlineCode",{parentName:"li"},"IPascalCase")," for interfaces names (see the ",(0,r.kt)("inlineCode",{parentName:"li"},"I")," prefix)."),(0,r.kt)("li",{parentName:"ul"},"For the rest of identifiers not specified here, we use ",(0,r.kt)("inlineCode",{parentName:"li"},"PascalCase"),".")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/adec6d2b.279292d7.js b/assets/js/adec6d2b.279292d7.js new file mode 100644 index 000000000..17b3d15b6 --- /dev/null +++ b/assets/js/adec6d2b.279292d7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[821],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>b});var r=n(7294);function i(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,p=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=l(n),u=i,b=d["".concat(p,".").concat(u)]||d[u]||m[u]||a;return n?r.createElement(b,o(o({ref:t},s),{},{components:n})):r.createElement(b,o({ref:t},s))}));function b(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=u;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c[d]="string"==typeof e?e:i,o[1]=c;for(var l=2;l<a;l++)o[l]=n[l];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},6606:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var r=n(7462),i=(n(7294),n(3905));const a={},o="JSON RPC",c={unversionedId:"interacting-with-nethermind/json-rpc-api/README",id:"interacting-with-nethermind/json-rpc-api/README",title:"JSON RPC",description:"JSON RPC is available via HTTP and WS.",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/README.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/",permalink:"/docs/interacting-with-nethermind/json-rpc-api/",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/README.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Interacting With Nethermind",permalink:"/docs/category/interacting-with-nethermind"},next:{title:"admin",permalink:"/docs/interacting-with-nethermind/json-rpc-api/admin"}},p={},l=[],s={toc:l},d="wrapper";function m(e){let{components:t,...n}=e;return(0,i.kt)(d,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"json-rpc"},"JSON RPC"),(0,i.kt)("p",null,"JSON RPC is available via HTTP and WS."),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"JSON RPC needs to be explicitly switched on in the Netherming ",(0,i.kt)("inlineCode",{parentName:"p"},"config")," file.")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="goerli.cfg"',title:'"goerli.cfg"'},' "JsonRpc": {\n "Enabled": true,\n "Host": "127.0.0.1",\n "Port": 8545\n }\n')),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"JSON RPC can be also enabled by passing ",(0,i.kt)("inlineCode",{parentName:"p"},"--JsonRpc.Enabled true")," flag to the ",(0,i.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"Nethermind.Launcher")," arguments.")),(0,i.kt)("p",null,"WebSockets, when enabled, will be accessible on the same address/port as HTTP by default, just using the ",(0,i.kt)("inlineCode",{parentName:"p"},"ws://")," protocol instead of ",(0,i.kt)("inlineCode",{parentName:"p"},"http://")," protocol. You can change the WebSocket port to something else like 8546 if desired."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="goerli.cfg"',title:'"goerli.cfg"'},' "Init": {\n "WebSocketsEnabled": true\n },\n "JsonRpc": {\n "WebSocketsPort": 8545\n }\n')),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"WebSockets can also be enabled by passing ",(0,i.kt)("inlineCode",{parentName:"p"},"--Init.WebSocketsEnabled true")," as show below:"),(0,i.kt)("pre",{parentName:"admonition"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Runner --Init.WebSocketsEnabled true --JsonRpc.WebSocketsPort 8545\n")),(0,i.kt)("p",{parentName:"admonition"},"or"),(0,i.kt)("pre",{parentName:"admonition"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Launcher --Init.WebSocketsEnabled true --JsonRpc.WebSocketsPort 8545\n"))),(0,i.kt)("p",null,"Some of the methods listed in this section are not implemented by Nethermind (they will be marked)."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/af7f12e4.ea49534d.js b/assets/js/af7f12e4.ea49534d.js new file mode 100644 index 000000000..bc16de670 --- /dev/null +++ b/assets/js/af7f12e4.ea49534d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5527],{3905:(t,e,a)=>{a.d(e,{Zo:()=>k,kt:()=>f});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function d(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),m=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},k=function(t){var e=m(t.components);return n.createElement(p.Provider,{value:e},t.children)},o="mdxType",N={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,p=t.parentName,k=d(t,["components","mdxType","originalType","parentName"]),o=m(a),c=r,f=o["".concat(p,".").concat(c)]||o[c]||N[c]||l;return a?n.createElement(f,i(i({ref:e},k),{},{components:a})):n.createElement(f,i({ref:e},k))}));function f(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=c;var d={};for(var p in e)hasOwnProperty.call(e,p)&&(d[p]=e[p]);d.originalType=t,d[o]="string"==typeof t?t:r,i[1]=d;for(var m=2;m<l;m++)i[m]=a[m];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}c.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(t){let{children:e,hidden:a,className:i}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>T});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),d=a(6550),p=a(1980),m=a(7392),k=a(12);function o(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function N(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??o(a);return function(t){const e=(0,m.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function c(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function f(t){let{queryString:e=!1,groupId:a}=t;const n=(0,d.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,p._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function s(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=N(t),[i,d]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!c({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[p,m]=f({queryString:a,groupId:n}),[o,s]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,k.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),b=(()=>{const t=p??o;return c({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{b&&d(b)}),[b]);return{selectedValue:i,selectValue:(0,r.useCallback)((t=>{if(!c({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);d(t),m(t),s(t)}),[m,s,l]),tabValues:l}}var b=a(2389);const u={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(t){let{className:e,block:a,selectedValue:d,selectValue:p,tabValues:m}=t;const k=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.o5)(),N=t=>{const e=t.currentTarget,a=k.indexOf(e),n=m[a].value;n!==d&&(o(e),p(n))},c=t=>{let e=null;switch(t.key){case"Enter":N(t);break;case"ArrowRight":{const a=k.indexOf(t.currentTarget)+1;e=k[a]??k[0];break}case"ArrowLeft":{const a=k.indexOf(t.currentTarget)-1;e=k[a]??k[k.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},m.map((t=>{let{value:e,label:a,attributes:i}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:d===e?0:-1,"aria-selected":d===e,key:e,ref:t=>k.push(t),onKeyDown:c,onClick:N},i,{className:(0,l.Z)("tabs__item",u.tabItem,i?.className,{"tabs__item--active":d===e})}),a??e)})))}function y(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function h(t){const e=s(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",u.tabList)},r.createElement(g,(0,n.Z)({},t,e)),r.createElement(y,(0,n.Z)({},t,e)))}function T(t){const e=(0,b.Z)();return r.createElement(h,(0,n.Z)({key:String(e)},t))}},9856:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>k,contentTitle:()=>p,default:()=>f,frontMatter:()=>d,metadata:()=>m,toc:()=>o});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const d={},p="trace",m={unversionedId:"interacting-with-nethermind/json-rpc-api/trace",id:"interacting-with-nethermind/json-rpc-api/trace",title:"trace",description:"trace_block",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/trace.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/trace",permalink:"/docs/interacting-with-nethermind/json-rpc-api/trace",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/trace.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Subscribe module",permalink:"/docs/interacting-with-nethermind/json-rpc-api/subscribe"},next:{title:"txpool",permalink:"/docs/interacting-with-nethermind/json-rpc-api/txpool"}},k={},o=[{value:"trace_block",id:"trace_block",level:2},{value:"trace_call",id:"trace_call",level:2},{value:"trace_filter",id:"trace_filter",level:2},{value:"trace_rawTransaction",id:"trace_rawtransaction",level:2},{value:"trace_replayBlockTransactions",id:"trace_replayblocktransactions",level:2},{value:"trace_replayTransaction",id:"trace_replaytransaction",level:2},{value:"trace_transaction",id:"trace_transaction",level:2}],N={toc:o},c="wrapper";function f(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},N,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"trace"},"trace"),(0,r.kt)("h2",{id:"trace_block"},"trace_block"),(0,r.kt)("p",null,"Returns traces created at given block. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"trace_block","params":[numberOrTag]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"numberOrTag"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"trace_block","params":[latest],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"action":{"callType":"call","from":"0x31b98d14007bdee637298086988a0bbd31184523","gas":"0x0","input":"0x","to":"0x0e8cda5d7ebda67606a9b296a9dd4351bca1d263","value":"0x1043561a882930000"},"blockHash":"0x6537c92f1fae55d9ea9b0fb25744262114b09e50ac320d7d839830f8c4d723a0","blockNumber":8969312,"result":{"gasUsed":"0x0","output":"0x"},"subtraces":0,"traceAddress":[],"transactionHash":"0xf4860fc1dc22404b85db7d666dfae65dec7cdcb196837a67ffa992d709f78b9e","transactionPosition":11,"type":"call"},{"action":{"callType":"call","from":"0x71c95151c960aa3976b462ff41adb328790f110d","gas":"0x7205","input":"0x095ea7b3000000000000000000000000c5992c0e0a3267c7f75493d0f717201e26be35f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","to":"0x5592ec0cfb4dbc12d3ab100b257153436a1f0fea","value":"0x0"},"blockHash":"0x6537c92f1fae55d9ea9b0fb25744262114b09e50ac320d7d839830f8c4d723a0","blockNumber":8969312,"result":{"gasUsed":"0x5fdd","output":"0x0000000000000000000000000000000000000000000000000000000000000001"},"subtraces":0,"traceAddress":[],"transactionHash":"0xec216ca7e754ea289dd59fc7f9f2c9a5b90668afb5a52d49ee15c3c5fd559b3b","transactionPosition":12,"type":"call"},\n "id": 1\n}\n'))),(0,r.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/trace#trace-block"},"See also CLI trace.block")),(0,r.kt)("h2",{id:"trace_call"},"trace_call"),(0,r.kt)("p",null,"Traces a call, returning the traces "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"trace_call","params":[call, traceTypes, blockParameter]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"call"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TransactionForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"traceTypes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Possible values : ",'["VmTrace", "StateDiff", "Trace", "Rewards", "All"]')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTxTraceFromReplay object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"trace_call","params":[call, traceTypes, blockParameter],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Object",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TransactionForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Nonce"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionIndex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GasPrice"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxPriorityFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AccessList"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"AccessListItemForRpc[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxFeePerDataGas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlobVersionedHashes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"V"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"S"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"R"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"YParity"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-2718"},"EIP2718")," transaction type")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AccessListItemForRpc[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StorageKeys"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityTxTraceFromReplay")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Output"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"VmTrace"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityVmTrace object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Action"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTraceAction object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateChanges"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityVmTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Code"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Operations"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityVmOperationTrace[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityTraceAction")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TraceAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CallType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IncludeInTrace"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsPrecompiled"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CreationMethod"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Result"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTraceResult object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Subtraces"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RewardType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/trace#trace-call"},"See also CLI trace.call")),(0,r.kt)("h2",{id:"trace_filter"},"trace_filter"),(0,r.kt)("p",null,"Return all traces of the given filter "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"trace_filter","params":[traceFilterForRpc]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"traceFilterForRpc"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TraceFilterForRpc object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"trace_filter","params":[traceFilterForRpc],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"objects",value:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TraceFilterForRpc")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FromBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ToBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"FromAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ToAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address[] object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"After"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Count"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Address[]")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Zero"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SystemUser"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Bytes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Item"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/trace#trace-filter"},"See also CLI trace.filter")),(0,r.kt)("h2",{id:"trace_rawtransaction"},"trace_rawTransaction"),(0,r.kt)("p",null,"Traces a call to eth_sendRawTransaction without making the call, returning the traces "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"trace_rawTransaction","params":[data, traceTypes]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"traceTypes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Possible values : ",'["VmTrace", "StateDiff", "Trace", "Rewards", "All"]')))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTxTraceFromReplay object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"trace_rawTransaction","params":[data, traceTypes],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": "output":"0x","stateDiff":null,"trace":[{"action":{"callType":"call","from":"0xc451c26cc24c25e46b148ac4716804c12c34e7d2","gas":"0x0","input":"0x","to":"0xb943b13292086848d8180d75c73361107920bb1a","value":"0x0"},"result":{"gasUsed":"0x0","output":"0x"},"subtraces":0,"traceAddress":[],"type":"call"}],"vmTrace":null,\n "id": 1\n}\n'))),(0,r.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityTxTraceFromReplay")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Output"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"VmTrace"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityVmTrace object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Action"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTraceAction object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateChanges"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityVmTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Code"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Operations"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityVmOperationTrace[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityTraceAction")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TraceAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CallType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IncludeInTrace"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsPrecompiled"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CreationMethod"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Result"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTraceResult object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Subtraces"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RewardType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/trace#trace-rawtransaction"},"See also CLI trace.rawTransaction")),(0,r.kt)("h2",{id:"trace_replayblocktransactions"},"trace_replayBlockTransactions"),(0,r.kt)("p",null,"Replays all transactions in a block returning the requested traces for each transaction. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"trace_replayBlockTransactions","params":[blockParameter, traceTypes]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"blockParameter"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameter object")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"traceTypes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Possible values : ",'["VmTrace", "StateDiff", "Trace", "Rewards", "All"]')))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"trace_replayBlockTransactions","params":[blockParameter, traceTypes],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": [{"output":"0x0000000000000000000000000000000000000000000000000000000000000001","stateDiff":null,"trace":[{"action":{"callType":"call","from":"0x37f207b3ebda37de11ad2b6d306464e313c4841a","gas":"0x3c36","input":"0xa9059cbb000000000000000000000000d20d2f4c0b595abedef821a4157b0b990a37dae60000000000000000000000000000000000000000000000008ac7230489e80000","to":"0x59a524d1f5dcbde3224fd42171795283596a8103","value":"0x0"},"result":{"gasUsed":"0x3c36","output":"0x0000000000000000000000000000000000000000000000000000000000000001"},"subtraces":0,"traceAddress":[],"type":"call"}],"transactionHash":"0x17dc0fef36bb997c79ee2a0a126d059227000a2d47c9bbd1f49b5902a4e7385a","vmTrace":null}, (...)],\n "id": 1\n}\n'))),(0,r.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameter")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"BlockParameterType object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockNumber"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BlockHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RequireCanonical"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"BlockParameterType")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Quantity")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"String")," (latest, earliest, pending)")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/trace#trace-replayblocktransactions"},"See also CLI trace.replayBlockTransactions")),(0,r.kt)("h2",{id:"trace_replaytransaction"},"trace_replayTransaction"),(0,r.kt)("p",null,"Replays a transaction, returning the traces. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"trace_replayTransaction","params":[txHash, traceTypes]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"traceTypes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Possible values : ",'["VmTrace", "StateDiff", "Trace", "Rewards", "All"]')))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTxTraceFromReplay object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"trace_replayTransaction","params":[txHash, traceTypes],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": {"output":"0x","stateDiff":null,"trace":[{"action":{"callType":"call","from":"0x3c436c8ec40e0679fe64168545812ac13220f150","gas":"0xc118","input":"0xd46eb119","to":"0x9e00de186f33e9fac9e28d69127f7f637b96c177","value":"0xde0b6b3a7640000"},"result":{"gasUsed":"0xc118","output":"0x"},"subtraces":4,"traceAddress":[],"type":"call"},{"action":{"callType":"call","from":"0x9e00de186f33e9fac9e28d69127f7f637b96c177","gas":"0xa965","input":"0x40c10f190000000000000000000000009e00de186f33e9fac9e28d69127f7f637b96c1770000000000000000000000000000000000000000000000000de0b6b3a7640000","to":"0x766cd52cb91f4d2d7ea8b4c175aff0aba3696be1","value":"0x0"},"result":{"gasUsed":"0x76b8","output":"0x"},"subtraces":0,"traceAddress":[0],"type":"call"}, (...)}]},\n "id": 1\n}\n'))),(0,r.kt)(i.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityTxTraceFromReplay")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Output"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TransactionHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"VmTrace"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityVmTrace object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Action"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTraceAction object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StateChanges"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityVmTrace")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Code"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Operations"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityVmOperationTrace[] object"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"ParityTraceAction")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TraceAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CallType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IncludeInTrace"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsPrecompiled"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CreationMethod"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"From"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"To"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Gas"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Value"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Result"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"ParityTraceResult object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Subtraces"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Author"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RewardType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Error"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/trace#trace-replaytransaction"},"See also CLI trace.replayTransaction")),(0,r.kt)("h2",{id:"trace_transaction"},"trace_transaction"),(0,r.kt)("p",null,"Returns all traces of given transaction "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"trace_transaction","params":[txHash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"txHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"trace_transaction","params":[["0x203abf19610ce15bc509d4b341e907ff8c5a8287ae61186fd4da82146408c28c"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": [{"action":{"callType":"call","from":"0x3c436c8ec40e0679fe64168545812ac13220f150","gas":"0xc118","input":"0xd46eb119","to":"0x9e00de186f33e9fac9e28d69127f7f637b96c177","value":"0xde0b6b3a7640000"},"blockHash":"0xf40b4c9faaeaf116a50380ce3795297bc02068b062f1797cd507875347c3372e","blockNumber":8970132,"result":{"gasUsed":"0xc118","output":"0x"},"subtraces":4,"traceAddress":[],"transactionHash":"0x203abf19610ce15bc509d4b341e907ff8c5a8287ae61186fd4da82146408c28c","transactionPosition":9,"type":"call"},(...)],\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/trace#trace-transaction"},"See also CLI trace.transaction")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b0f859a8.4f9c762d.js b/assets/js/b0f859a8.4f9c762d.js new file mode 100644 index 000000000..56aaad735 --- /dev/null +++ b/assets/js/b0f859a8.4f9c762d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[100],{3905:(e,t,r)=>{r.d(t,{Zo:()=>f,kt:()=>u});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 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 o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),c=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},f=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,f=l(e,["components","mdxType","originalType","parentName"]),m=c(r),d=a,u=m["".concat(p,".").concat(d)]||m[d]||s[d]||i;return r?n.createElement(u,o(o({ref:t},f),{},{components:r})):n.createElement(u,o({ref:t},f))}));function u(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=r[c];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},9027:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>s,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var n=r(7462),a=(r(7294),r(3905));const i={},o="Receipt",l={unversionedId:"fundamentals/configuration/receipt",id:"fundamentals/configuration/receipt",title:"Receipt",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/receipt.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/receipt",permalink:"/docs/fundamentals/configuration/receipt",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/receipt.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Pruning",permalink:"/docs/fundamentals/configuration/pruning"},next:{title:"Sample configuration",permalink:"/docs/fundamentals/configuration/sample-configuration"}},p={},c=[],f={toc:c},m="wrapper";function s(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"receipt"},"Receipt"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"CompactReceiptStore"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then reduce receipt db size at expense of rpc performance."),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"CompactTxIndex"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then reduce receipt tx index db size at expense of rpc performance."),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ReceiptsMigration"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then receipts db will be migrated to new schema."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"StoreReceipts"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_RECEIPTCONFIG_STORERECEIPTS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If set to 'false' then transaction receipts will not be stored in the database after a new block is processed. This setting is independent from downloading receipts in fast sync mode."),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TxLookupLimit"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of recent blocks to maintain transaction index. 0 to never remove tx index. -1 to never index."),(0,a.kt)("td",{parentName:"tr",align:"left"},"2350000")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b183ded8.34fac243.js b/assets/js/b183ded8.34fac243.js new file mode 100644 index 000000000..bb162da16 --- /dev/null +++ b/assets/js/b183ded8.34fac243.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9546],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var m=r.createContext({}),c=function(e){var t=r.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(m.Provider,{value:t},e.children)},d="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,m=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),u=a,f=d["".concat(m,".").concat(u)]||d[u]||s[u]||i;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var l={};for(var m in t)hasOwnProperty.call(t,m)&&(l[m]=t[m]);l.originalType=e,l[d]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=n[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},9115:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>m,contentTitle:()=>o,default:()=>s,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const i={},o="Mev",l={unversionedId:"monitoring/metrics-explanation/mev",id:"monitoring/metrics-explanation/mev",title:"Mev",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/mev.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/mev",permalink:"/docs/monitoring/metrics-explanation/mev",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/mev.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Merge.Plugin",permalink:"/docs/monitoring/metrics-explanation/merge.plugin"},next:{title:"Network",permalink:"/docs/monitoring/metrics-explanation/network"}},m={},c=[],p={toc:c},d="wrapper";function s(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"mev"},"Mev"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_bundles_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of bundles received for inclusion")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_bundles_simulated"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of bundles simulated")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_megabundles_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of megabundles received for inclusion")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_total_coinbase_payments"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total coinbase payments in wei")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_valid_bundles_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of valid bundles received for inclusion")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_valid_megabundles_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of valid megabundles received for inclusion")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b2b675dd.d838adc3.js b/assets/js/b2b675dd.d838adc3.js new file mode 100644 index 000000000..0bace946c --- /dev/null +++ b/assets/js/b2b675dd.d838adc3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[533],{8017:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.457fb4be.js b/assets/js/b2f554cd.457fb4be.js new file mode 100644 index 000000000..9c150908b --- /dev/null +++ b/assets/js/b2f554cd.457fb4be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1477],{4556:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"welcome","metadata":{"permalink":"/blog/welcome","source":"@site/blog/2021-08-26-welcome/index.md","title":"Welcome","description":"Docusaurus blogging features are powered by the blog plugin.","date":"2021-08-26T00:00:00.000Z","formattedDate":"August 26, 2021","tags":[{"label":"facebook","permalink":"/blog/tags/facebook"},{"label":"hello","permalink":"/blog/tags/hello"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.405,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"},{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","imageURL":"https://github.com/yangshun.png","key":"yangshun"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["slorber","yangshun"],"tags":["facebook","hello","docusaurus"]},"nextItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"}},"content":"[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).\\n\\nSimply add Markdown files (or folders) to the `blog` directory.\\n\\nRegular blog authors can be added to `authors.yml`.\\n\\nThe blog post date can be extracted from filenames, such as:\\n\\n- `2019-05-30-welcome.md`\\n- `2019-05-30-welcome/index.md`\\n\\nA blog post folder can be convenient to co-locate blog post images:\\n\\n![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)\\n\\nThe blog supports tags as well!\\n\\n**And if you don\'t want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config."},{"id":"mdx-blog-post","metadata":{"permalink":"/blog/mdx-blog-post","source":"@site/blog/2021-08-01-mdx-blog-post.mdx","title":"MDX Blog Post","description":"Blog posts support Docusaurus Markdown features, such as MDX.","date":"2021-08-01T00:00:00.000Z","formattedDate":"August 1, 2021","tags":[{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.175,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"}],"frontMatter":{"slug":"mdx-blog-post","title":"MDX Blog Post","authors":["slorber"],"tags":["docusaurus"]},"prevItem":{"title":"Welcome","permalink":"/blog/welcome"},"nextItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).\\n\\n:::tip\\n\\nUse the power of React to create interactive blog posts.\\n\\n```js\\n<button onClick={() => alert(\\"button clicked!\\")}>Click me!</button>\\n```\\n\\n<button onClick={() => alert(\\"button clicked!\\")}>Click me!</button>\\n\\n:::"},{"id":"long-blog-post","metadata":{"permalink":"/blog/long-blog-post","source":"@site/blog/2019-05-29-long-blog-post.md","title":"Long Blog Post","description":"This is the summary of a very long blog post,","date":"2019-05-29T00:00:00.000Z","formattedDate":"May 29, 2019","tags":[{"label":"hello","permalink":"/blog/tags/hello"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":2.05,"hasTruncateMarker":true,"authors":[{"name":"Endilie Yacop Sucipto","title":"Maintainer of Docusaurus","url":"https://github.com/endiliey","imageURL":"https://github.com/endiliey.png","key":"endi"}],"frontMatter":{"slug":"long-blog-post","title":"Long Blog Post","authors":"endi","tags":["hello","docusaurus"]},"prevItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},"nextItem":{"title":"First Blog Post","permalink":"/blog/first-blog-post"}},"content":"This is the summary of a very long blog post,\\n\\nUse a `\x3c!--` `truncate` `--\x3e` comment to limit blog post size in the list view.\\n\\n\x3c!--truncate--\x3e\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"},{"id":"first-blog-post","metadata":{"permalink":"/blog/first-blog-post","source":"@site/blog/2019-05-28-first-blog-post.md","title":"First Blog Post","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","date":"2019-05-28T00:00:00.000Z","formattedDate":"May 28, 2019","tags":[{"label":"hola","permalink":"/blog/tags/hola"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.12,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"first-blog-post","title":"First Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hola","docusaurus"]},"prevItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}]}')}}]); \ No newline at end of file diff --git a/assets/js/b41e4962.8fc4b8f1.js b/assets/js/b41e4962.8fc4b8f1.js new file mode 100644 index 000000000..58d077950 --- /dev/null +++ b/assets/js/b41e4962.8fc4b8f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1374],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function d(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),m=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):d(d({},t),e)),a},p=function(e){var t=m(e.components);return n.createElement(o.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,o=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=m(a),u=r,k=s["".concat(o,".").concat(u)]||s[u]||c[u]||l;return a?n.createElement(k,d(d({ref:t},p),{},{components:a})):n.createElement(k,d({ref:t},p))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,d=new Array(l);d[0]=u;var i={};for(var o in t)hasOwnProperty.call(t,o)&&(i[o]=t[o]);i.originalType=e,i[s]="string"==typeof e?e:r,d[1]=i;for(var m=2;m<l;m++)d[m]=a[m];return n.createElement.apply(null,d)}return n.createElement.apply(null,a)}u.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>d});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function d(e){let{children:t,hidden:a,className:d}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,d),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(7462),r=a(7294),l=a(6010),d=a(2466),i=a(6550),o=a(1980),m=a(7392),p=a(12);function s(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function c(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??s(a);return function(e){const t=(0,m.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function u(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function k(e){let{queryString:t=!1,groupId:a}=e;const n=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,o._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function f(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=c(e),[d,i]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!u({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[o,m]=k({queryString:a,groupId:n}),[s,f]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,p.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),b=(()=>{const e=o??s;return u({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{b&&i(b)}),[b]);return{selectedValue:d,selectValue:(0,r.useCallback)((e=>{if(!u({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),m(e),f(e)}),[m,f,l]),tabValues:l}}var b=a(2389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:t,block:a,selectedValue:i,selectValue:o,tabValues:m}=e;const p=[],{blockElementScrollPositionUntilNextRender:s}=(0,d.o5)(),c=e=>{const t=e.currentTarget,a=p.indexOf(t),n=m[a].value;n!==i&&(s(t),o(n))},u=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const a=p.indexOf(e.currentTarget)+1;t=p[a]??p[0];break}case"ArrowLeft":{const a=p.indexOf(e.currentTarget)-1;t=p[a]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},m.map((e=>{let{value:t,label:a,attributes:d}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>p.push(e),onKeyDown:u,onClick:c},d,{className:(0,l.Z)("tabs__item",N.tabItem,d?.className,{"tabs__item--active":i===t})}),a??t)})))}function h(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=f(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",N.tabList)},r.createElement(g,(0,n.Z)({},e,t)),r.createElement(h,(0,n.Z)({},e,t)))}function v(e){const t=(0,b.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},1837:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>k,frontMatter:()=>i,metadata:()=>m,toc:()=>s});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),d=a(5162);const i={},o="admin",m={unversionedId:"nethermind-utilities/cli/admin",id:"nethermind-utilities/cli/admin",title:"admin",description:"admin.addPeer",source:"@site/docs/06-nethermind-utilities/cli/admin.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/admin",permalink:"/docs/nethermind-utilities/cli/admin",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/admin.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"CLI",permalink:"/docs/nethermind-utilities/cli/"},next:{title:"clique",permalink:"/docs/nethermind-utilities/cli/clique"}},p={},s=[{value:"admin.addPeer",id:"adminaddpeer",level:2},{value:"admin.nodeInfo",id:"adminnodeinfo",level:2},{value:"admin.peers",id:"adminpeers",level:2},{value:"admin.removePeer",id:"adminremovepeer",level:2}],c={toc:s},u="wrapper";function k(e){let{components:t,...a}=e;return(0,r.kt)(u,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"admin"},"admin"),(0,r.kt)("h2",{id:"adminaddpeer"},"admin.addPeer"),(0,r.kt)("p",null,"Adds given node."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"admin.addPeer(enode, addToStaticNodes)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"enode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Given node")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"addToStaticNodes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Adding to static nodes if ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," (optional)")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Added node")))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'admin.addPeer("enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303", true)\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'"enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303"\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/admin#admin_addpeer"},"See also JSON RPC admin_addPeer")),(0,r.kt)("h2",{id:"adminnodeinfo"},"admin.nodeInfo"),(0,r.kt)("p",null,"Displays relevant information about this node."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"admin.nodeInfo"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"NodeInfo object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Information about this node")))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"admin.nodeInfo\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "enode": "enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303",\n "id": "b70bb308924de8247d73844f80561e488ae731105a6ef46004e4579edd4f378a",\n "ip": "85.221.141.144",\n "listenAddr": "85.221.141.144:30303",\n "name": "Nethermind/v1.10.37-0-068e5c399-20210315/X64-Windows/5.0.3",\n "ports": {\n "discovery": 30303,\n "listener": 30303\n },\n "protocols": {\n "eth": {\n "difficulty": "0x6372ca",\n "genesis": "0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a",\n "head": "0xf266b2639ef7e1db6ee769f7b161ef7eb2d74beb0ab8ffcd270036da04b41cd4",\n "network": "0x5"\n }\n }\n}\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"NodeInfo")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Enode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Id"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Ip"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ListenAddress"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Name"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Ports"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PortsInfo object"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Protocols"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PortsInfo")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Discovery"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Listener"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/admin#admin_nodeinfo"},"See also JSON RPC admin_nodeInfo")),(0,r.kt)("h2",{id:"adminpeers"},"admin.peers"),(0,r.kt)("p",null,"Displays a list of connected peers including information about\nthem (",(0,r.kt)("inlineCode",{parentName:"p"},"clientId"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"host"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"port"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"address"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"isBootnode"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"isStatic"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"enode"),")."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"admin.peers(includeDetails)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"includeDetails"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"},"If true, including ",(0,r.kt)("inlineCode",{parentName:"td"},"clientType"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"ethDetails")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"lastSignal")," (optional)")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"PeerInfo object")),(0,r.kt)("td",{parentName:"tr",align:"left"},"List of connected peers including information")))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"admin.peers(true)\n"))),(0,r.kt)(d.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'[\n {\n "clientId": "Nethermind/v1.10.33-1-5c4c185e8-20210310/X64-Linux/5.0.2",\n "host": "94.237.54.114",\n "port": 30313,\n "address": "94.237.54.114:30313",\n "isBootnode": false,\n "isTrusted": false,\n "isStatic": false,\n "enode": "enode://46add44b9f13965f7b9875ac6b85f016f341012d84f975377573800a863526f4da19ae2c620ec73d11591fa9510e992ecc03ad0751f53cc02f7c7ed6d55c7291@94.237.54.114:30313",\n "clientType": "Nethermind",\n "ethDetails": "eth65",\n "lastSignal": "03/11/2021 12:33:58"\n },\n\n (...)\n\n]\n'))),(0,r.kt)(d.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PeerInfo")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ClientId"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Host"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Port"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsBootnode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsTrusted"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsStatic"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Enode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ClientType"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EthDetails"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LastSignal"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/admin#admin_peers"},"See also JSON RPC admin_peers")),(0,r.kt)("h2",{id:"adminremovepeer"},"admin.removePeer"),(0,r.kt)("p",null,"Removes given node."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"admin.removePeer(enode, removeFromStaticNodes)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"enode"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Given node")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"removeFromStaticNodes"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Removing from static nodes if ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," (optional)")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Removed node")))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(d.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'admin.removePeer("enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303", true)\n'))),(0,r.kt)(d.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'"enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303"\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/admin#admin_removepeer"},"See also JSON RPC admin_removePeer")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b53a0035.33e0e9cc.js b/assets/js/b53a0035.33e0e9cc.js new file mode 100644 index 000000000..e12e40bc5 --- /dev/null +++ b/assets/js/b53a0035.33e0e9cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7723],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>d});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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},f="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),f=u(r),m=a,d=f["".concat(c,".").concat(m)]||f[m]||s[m]||o;return r?n.createElement(d,l(l({ref:t},p),{},{components:r})):n.createElement(d,l({ref:t},p))}));function d(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[f]="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=r[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},8176:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>s,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const o={},l="Wallet",i={unversionedId:"fundamentals/configuration/wallet",id:"fundamentals/configuration/wallet",title:"Wallet",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/wallet.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/wallet",permalink:"/docs/fundamentals/configuration/wallet",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/wallet.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"TxPool",permalink:"/docs/fundamentals/configuration/txpool"},next:{title:"Security",permalink:"/docs/fundamentals/security"}},c={},u=[],p={toc:u},f="wrapper";function s(e){let{components:t,...r}=e;return(0,a.kt)(f,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"wallet"},"Wallet"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"DevAccounts"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_WALLETCONFIG_DEVACCOUNTS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of auto-generted dev accounts to work with. Dev accounts will have private keys from 00...01 to 00..n"),(0,a.kt)("td",{parentName:"tr",align:"left"},"10")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b6ba0dff.d907ae45.js b/assets/js/b6ba0dff.d907ae45.js new file mode 100644 index 000000000..30b4a8acc --- /dev/null +++ b/assets/js/b6ba0dff.d907ae45.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[579],{3905:(t,e,a)=>{a.d(e,{Zo:()=>p,kt:()=>m});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function o(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var d=n.createContext({}),s=function(t){var e=n.useContext(d),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},p=function(t){var e=s(t.components);return n.createElement(d.Provider,{value:e},t.children)},c="mdxType",f={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},N=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,d=t.parentName,p=o(t,["components","mdxType","originalType","parentName"]),c=s(a),N=r,m=c["".concat(d,".").concat(N)]||c[N]||f[N]||l;return a?n.createElement(m,i(i({ref:e},p),{},{components:a})):n.createElement(m,i({ref:e},p))}));function m(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=N;var o={};for(var d in e)hasOwnProperty.call(e,d)&&(o[d]=e[d]);o.originalType=t,o[c]="string"==typeof t?t:r,i[1]=o;for(var s=2;s<l;s++)i[s]=a[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}N.displayName="MDXCreateElement"},1986:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>i,default:()=>f,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var n=a(7462),r=(a(7294),a(3905));const l={},i="HealthChecks",o={unversionedId:"fundamentals/configuration/healthchecks",id:"fundamentals/configuration/healthchecks",title:"HealthChecks",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/healthchecks.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/healthchecks",permalink:"/docs/fundamentals/configuration/healthchecks",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/healthchecks.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"EthStats",permalink:"/docs/fundamentals/configuration/ethstats"},next:{title:"Hive",permalink:"/docs/fundamentals/configuration/hive"}},d={},s=[],p={toc:s},c="wrapper";function f(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},p,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"healthchecks"},"HealthChecks"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_ENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'true' then Health Check endpoints is enabled at /health"),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LowStorageCheckAwaitOnStartup"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Free disk space check on startup will pause node initalization until enough space is available."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LowStorageSpaceShutdownThreshold"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Percentage of available disk space below which node will shutdown. Zero to disable."),(0,r.kt)("td",{parentName:"tr",align:"left"},"1")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LowStorageSpaceWarningThreshold"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Percentage of available disk space below which a warning will be displayed. Zero to disable."),(0,r.kt)("td",{parentName:"tr",align:"left"},"5")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxIntervalClRequestTime"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Max request interval in which we assume that CL works in a healthy way"),(0,r.kt)("td",{parentName:"tr",align:"left"},"300")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxIntervalWithoutProcessedBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Max interval in seconds in which we assume that node processing blocks in a healthy way"),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxIntervalWithoutProducedBlock"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Max interval in seconds in which we assume that node producing blocks in a healthy way"),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PollingInterval"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Configures the UI to poll for healthchecks updates (in seconds)"),(0,r.kt)("td",{parentName:"tr",align:"left"},"5")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Slug"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_SLUG"),(0,r.kt)("td",{parentName:"tr",align:"left"},"The URL slug on which Healthchecks service will be exposed"),(0,r.kt)("td",{parentName:"tr",align:"left"},"/health")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"UIEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'true' then HealthChecks UI will be avaiable at /healthchecks-ui"),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WebhooksEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'true' then Webhooks can be configured"),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WebhooksPayload"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Payload is the json payload that will be send on Failure and must be escaped."),(0,r.kt)("td",{parentName:"tr",align:"left"},'{"attachments":[{"color":"#FFCC00","pretext":"Health Check Status \u26a0\ufe0f","fields":[{"title":"Details","value":"More details available at ',(0,r.kt)("inlineCode",{parentName:"td"},"/healthchecks-ui"),'","short":false},{"title":"Description","value":"[',"[DESCRIPTIONS]",']","short":false}]}]}')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WebhooksRestorePayload"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD"),(0,r.kt)("td",{parentName:"tr",align:"left"},"RestorePayload is the json payload that will be send on Recovery and must be escaped."),(0,r.kt)("td",{parentName:"tr",align:"left"},'{"attachments":[{"color":"#36a64f","pretext":"Health Check Status \ud83d\udc4d","fields":[{"title":"Details","value":"',(0,r.kt)("inlineCode",{parentName:"td"},"More details available at /healthchecks-ui"),'","short":false},{"title":"description","value":"The HealthCheck ',(0,r.kt)("inlineCode",{parentName:"td"},"[[LIVENESS]]"),' is recovered. All is up and running","short":false}]}]}')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WebhooksUri"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI"),(0,r.kt)("td",{parentName:"tr",align:"left"},"The Webhooks endpoint e.g. Slack WebHooks"),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/bf8bff70.eda5b526.js b/assets/js/bf8bff70.eda5b526.js new file mode 100644 index 000000000..909581ddd --- /dev/null +++ b/assets/js/bf8bff70.eda5b526.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[529],{9836:e=>{e.exports=JSON.parse('{"title":"Resources","slug":"/category/resources","permalink":"/docs/category/resources","navigation":{"previous":{"title":"Pipeline","permalink":"/docs/nethermind-utilities/pipeline"},"next":{"title":"Connecting Wallet","permalink":"/docs/resources/connecting-wallet"}}}')}}]); \ No newline at end of file diff --git a/assets/js/c0d97a59.50da0262.js b/assets/js/c0d97a59.50da0262.js new file mode 100644 index 000000000..f464d2cad --- /dev/null +++ b/assets/js/c0d97a59.50da0262.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5836],{9284:e=>{e.exports=JSON.parse('{"title":"For Developers","slug":"/category/for-developers","permalink":"/docs/category/for-developers","navigation":{"previous":{"title":"Monitoring Node\'s Health","permalink":"/docs/monitoring/monitoring-node-health"},"next":{"title":"Building from source","permalink":"/docs/for-developers/building-nethermind"}}}')}}]); \ No newline at end of file diff --git a/assets/js/c31daa4a.9bfd2f1d.js b/assets/js/c31daa4a.9bfd2f1d.js new file mode 100644 index 000000000..4d9f5b568 --- /dev/null +++ b/assets/js/c31daa4a.9bfd2f1d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8508],{3905:(t,e,n)=>{n.d(e,{Zo:()=>s,kt:()=>f});var r=n(7294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?o(Object(n),!0).forEach((function(e){a(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function c(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n,r,a={},o=Object.keys(t);for(r=0;r<o.length;r++)n=o[r],e.indexOf(n)>=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r<o.length;r++)n=o[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}var l=r.createContext({}),p=function(t){var e=r.useContext(l),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},s=function(t){var e=p(t.components);return r.createElement(l.Provider,{value:e},t.children)},m="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(t,e){var n=t.components,a=t.mdxType,o=t.originalType,l=t.parentName,s=c(t,["components","mdxType","originalType","parentName"]),m=p(n),d=a,f=m["".concat(l,".").concat(d)]||m[d]||u[d]||o;return n?r.createElement(f,i(i({ref:e},s),{},{components:n})):r.createElement(f,i({ref:e},s))}));function f(t,e){var n=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var l in e)hasOwnProperty.call(e,l)&&(c[l]=e[l]);c.originalType=t,c[m]="string"==typeof t?t:a,i[1]=c;for(var p=2;p<o;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},7778:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const o={},i="AccountAbstraction",c={unversionedId:"monitoring/metrics-explanation/accountabstraction",id:"monitoring/metrics-explanation/accountabstraction",title:"AccountAbstraction",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/accountabstraction.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/accountabstraction",permalink:"/docs/monitoring/metrics-explanation/accountabstraction",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/accountabstraction.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Metrics",permalink:"/docs/monitoring/metrics-explanation/"},next:{title:"AccountAbstraction.Network",permalink:"/docs/monitoring/metrics-explanation/accountabstraction.network"}},l={},p=[],s={toc:p},m="wrapper";function u(t){let{components:e,...n}=t;return(0,a.kt)(m,(0,r.Z)({},s,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"accountabstraction"},"AccountAbstraction"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_user_operations_included"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of UserOperation objects included into the chain by this miner")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_user_operations_pending"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of UserOperation objects accepted into the pool")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_user_operations_received"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of UserOperation objects received for inclusion")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_user_operations_simulated"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of UserOperation objects simulated")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.d338d959.js b/assets/js/c4f5d8e4.d338d959.js new file mode 100644 index 000000000..c661637b6 --- /dev/null +++ b/assets/js/c4f5d8e4.d338d959.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4195],{9722:(e,t,a)=>{a.d(t,{Z:()=>c});var l,r=a(7294);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var l in a)Object.prototype.hasOwnProperty.call(a,l)&&(e[l]=a[l])}return e},n.apply(this,arguments)}const c=e=>{let{title:t,titleId:a,...c}=e;return r.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",width:1088,height:687.962,viewBox:"0 0 1088 687.962","aria-labelledby":a},c),void 0===t?r.createElement("title",{id:a},"Easy to Use"):t?r.createElement("title",{id:a},t):null,l||(l=r.createElement("g",{"data-name":"Group 12"},r.createElement("g",{"data-name":"Group 11"},r.createElement("path",{"data-name":"Path 83",d:"M961.81 454.442c-5.27 45.15-16.22 81.4-31.25 110.31-20 38.52-54.21 54.04-84.77 70.28a193.275 193.275 0 0 1-27.46 11.94c-55.61 19.3-117.85 14.18-166.74 3.99a657.282 657.282 0 0 0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07 5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12 52.29-235.46 134.74-296.47 155.97-115.41 369.76-110.57 523.43 7.88 102.36 78.9 198.2 198.31 179.02 362.74Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 84",d:"M930.56 564.752c-20 38.52-47.21 64.04-77.77 80.28a193.272 193.272 0 0 1-27.46 11.94c-55.61 19.3-117.85 14.18-166.74 3.99a657.3 657.3 0 0 0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25 1.72c-100.17 7.36-253.82-6.43-321.42-143.29L326 177.962l62.95 161.619 20.09 51.59 55.37-75.98L493 275.962l130.2 149.27 36.8-81.27 254.78 207.919 14.21 11.59Z",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 85",d:"m302 282.962 26-57 36 83-31-60Z",opacity:.1}),r.createElement("path",{"data-name":"Path 86",d:"M554.5 647.802q-14.97-.675-29.97-.67l-115.49-255.96Z",opacity:.1}),r.createElement("path",{"data-name":"Path 87",d:"M464.411 315.191 493 292.962l130 150-132-128Z",opacity:.1}),r.createElement("path",{"data-name":"Path 88",d:"M852.79 645.032a193.265 193.265 0 0 1-27.46 11.94L623.2 425.232Z",opacity:.1}),r.createElement("circle",{"data-name":"Ellipse 11",cx:3,cy:3,r:3,transform:"translate(479 98.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 12",cx:3,cy:3,r:3,transform:"translate(396 201.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 13",cx:2,cy:2,r:2,transform:"translate(600 220.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 14",cx:2,cy:2,r:2,transform:"translate(180 265.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 15",cx:2,cy:2,r:2,transform:"translate(612 96.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 16",cx:2,cy:2,r:2,transform:"translate(736 192.962)",fill:"#f2f2f2"}),r.createElement("circle",{"data-name":"Ellipse 17",cx:2,cy:2,r:2,transform:"translate(858 344.962)",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 89",d:"M306 121.222h-2.76v-2.76h-1.48v2.76H299v1.478h2.76v2.759h1.48V122.7H306Z",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 90",d:"M848 424.222h-2.76v-2.76h-1.48v2.76H841v1.478h2.76v2.759h1.48V425.7H848Z",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 91",d:"M1088 613.962c0 16.569-243.557 74-544 74s-544-57.431-544-74 243.557 14 544 14 544-30.568 544-14Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 92",d:"M1088 613.962c0 16.569-243.557 74-544 74s-544-57.431-544-74 243.557 14 544 14 544-30.568 544-14Z",opacity:.1}),r.createElement("ellipse",{"data-name":"Ellipse 18",cx:544,cy:30,rx:544,ry:30,transform:"translate(0 583.962)",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 93",d:"M568 571.962c0 33.137-14.775 24-33 24s-33 9.137-33-24 33-96 33-96 33 62.863 33 96Z",fill:"#ff6584"}),r.createElement("path",{"data-name":"Path 94",d:"M550 584.641c0 15.062-6.716 10.909-15 10.909s-15 4.153-15-10.909 15-43.636 15-43.636 15 28.576 15 43.636Z",opacity:.1}),r.createElement("rect",{"data-name":"Rectangle 97",width:92,height:18,rx:9,transform:"translate(489 604.962)",fill:"#2f2e41"}),r.createElement("rect",{"data-name":"Rectangle 98",width:92,height:18,rx:9,transform:"translate(489 586.962)",fill:"#2f2e41"}),r.createElement("path",{"data-name":"Path 95",d:"M137 490.528c0 55.343 34.719 100.126 77.626 100.126",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 96",d:"M214.626 590.654c0-55.965 38.745-101.251 86.626-101.251",fill:"#6c63ff"}),r.createElement("path",{"data-name":"Path 97",d:"M165.125 495.545c0 52.57 22.14 95.109 49.5 95.109",fill:"#6c63ff"}),r.createElement("path",{"data-name":"Path 98",d:"M214.626 590.654c0-71.511 44.783-129.377 100.126-129.377",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 99",d:"M198.3 591.36s11.009-.339 14.326-2.7 16.934-5.183 17.757-1.395 16.544 18.844 4.115 18.945-28.879-1.936-32.19-3.953-4.008-10.897-4.008-10.897Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 100",d:"M234.716 604.89c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7 8.879 4.009 10.9 19.761 4.053 32.19 3.953c3.588-.029 4.827-1.305 4.759-3.2-.498 1.142-1.867 1.855-4.537 1.877Z",opacity:.2}),r.createElement("path",{"data-name":"Path 101",d:"M721.429 527.062c0 38.029 23.857 68.8 53.341 68.8",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 102",d:"M774.769 595.863c0-38.456 26.623-69.575 59.525-69.575",fill:"#6c63ff"}),r.createElement("path",{"data-name":"Path 103",d:"M740.755 530.509c0 36.124 15.213 65.354 34.014 65.354",fill:"#6c63ff"}),r.createElement("path",{"data-name":"Path 104",d:"M774.769 595.863c0-49.139 30.773-88.9 68.8-88.9",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 105",d:"M763.548 596.348s7.565-.233 9.844-1.856 11.636-3.562 12.2-.958 11.368 12.949 2.828 13.018-19.844-1.33-22.119-2.716-2.753-7.488-2.753-7.488Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 106",d:"M788.574 605.645c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479 6.1 2.755 7.487 13.579 2.785 22.119 2.716c2.465-.02 3.317-.9 3.27-2.2-.343.788-1.283 1.278-3.118 1.293Z",opacity:.2}),r.createElement("path",{"data-name":"Path 107",d:"M893.813 618.699s11.36-1.729 14.5-4.591 16.89-7.488 18.217-3.667 19.494 17.447 6.633 19.107-30.153 1.609-33.835-.065-5.515-10.784-5.515-10.784Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 108",d:"M933.228 628.154c-12.86 1.659-30.153 1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833 9.109 5.516 10.783 20.975 1.725 33.835.065c3.712-.479 4.836-1.956 4.529-3.906-.375 1.246-1.703 2.156-4.466 2.512Z",opacity:.2}),r.createElement("path",{"data-name":"Path 109",d:"M614.26 617.881s9.587-1.459 12.237-3.875 14.255-6.32 15.374-3.095 16.452 14.725 5.6 16.125-25.448 1.358-28.555-.055-4.656-9.1-4.656-9.1Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 110",d:"M647.524 625.856c-10.853 1.4-25.448 1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547 7.687 4.655 9.1 17.7 1.456 28.555.055c3.133-.4 4.081-1.651 3.822-3.3-.314 1.057-1.435 1.825-3.767 2.125Z",opacity:.2}),r.createElement("path",{"data-name":"Path 111",d:"M122.389 613.09s7.463-1.136 9.527-3.016 11.1-4.92 11.969-2.409 12.808 11.463 4.358 12.553-19.811 1.057-22.23-.043-3.624-7.085-3.624-7.085Z",fill:"#a8a8a8"}),r.createElement("path",{"data-name":"Path 112",d:"M148.285 619.302c-8.449 1.09-19.811 1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2 5.984 3.624 7.085 13.781 1.133 22.23.043c2.439-.315 3.177-1.285 2.976-2.566-.246.818-1.119 1.416-2.934 1.65Z",opacity:.2}),r.createElement("path",{"data-name":"Path 113",d:"M383.7 601.318c0 30.22-42.124 20.873-93.7 20.873s-93.074 9.347-93.074-20.873 42.118-36.793 93.694-36.793 93.08 6.573 93.08 36.793Z",opacity:.1}),r.createElement("path",{"data-name":"Path 114",d:"M383.7 593.881c0 30.22-42.124 20.873-93.7 20.873s-93.074 9.347-93.074-20.873 42.114-36.8 93.69-36.8 93.084 6.576 93.084 36.8Z",fill:"#3f3d56"})),r.createElement("path",{"data-name":"Path 40",d:"M360.175 475.732h91.791v37.153h-91.791Z",fill:"#fff",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 41",d:"M277.126 597.026a21.828 21.828 0 0 1-18.908-10.927 21.829 21.829 0 0 0 18.908 32.782h21.855v-21.855Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 42",d:"m375.451 481.607 76.514-4.782v-10.928a21.854 21.854 0 0 0-21.855-21.855h-98.347l-2.732-4.735a3.154 3.154 0 0 0-5.464 0l-2.732 4.732-2.732-4.732a3.154 3.154 0 0 0-5.464 0l-2.732 4.732-2.731-4.732a3.154 3.154 0 0 0-5.464 0l-2.732 4.735h-.071l-4.526-4.525a3.153 3.153 0 0 0-5.276 1.414l-1.5 5.577-5.674-1.521a3.154 3.154 0 0 0-3.863 3.864l1.52 5.679-5.575 1.494a3.155 3.155 0 0 0-1.416 5.278l4.526 4.526v.07l-4.735 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.727a3.154 3.154 0 0 0 0 5.464l4.735 2.736-4.735 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.735a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.728a3.154 3.154 0 0 0 0 5.464l4.732 2.732a21.854 21.854 0 0 0 21.858 21.855h131.13a21.854 21.854 0 0 0 21.855-21.855v-87.42l-76.514-4.782a11.632 11.632 0 0 1 0-23.219",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 43",d:"M408.255 618.882h32.782v-43.71h-32.782Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 44",d:"M462.893 591.563a5.438 5.438 0 0 0-.7.07c-.042-.164-.081-.329-.127-.493a5.457 5.457 0 1 0-5.4-9.372q-.181-.185-.366-.367a5.454 5.454 0 1 0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467 5.467 0 1 0-10.788 0c-.162.042-.325.08-.486.126a5.457 5.457 0 1 0-9.384 5.4 21.843 21.843 0 1 0 36.421 21.02 5.452 5.452 0 1 0 .7-10.858",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 45",d:"M419.183 553.317h32.782v-21.855h-32.782Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 46",d:"M462.893 545.121a2.732 2.732 0 1 0 0-5.464 2.811 2.811 0 0 0-.349.035c-.022-.082-.04-.164-.063-.246a2.733 2.733 0 0 0-1.052-5.253 2.7 2.7 0 0 0-1.648.566q-.09-.093-.184-.184a2.7 2.7 0 0 0 .553-1.633 2.732 2.732 0 0 0-5.245-1.07 10.928 10.928 0 1 0 0 21.031 2.732 2.732 0 0 0 5.245-1.07 2.7 2.7 0 0 0-.553-1.633q.093-.09.184-.184a2.7 2.7 0 0 0 1.648.566 2.732 2.732 0 0 0 1.052-5.253c.023-.081.042-.164.063-.246a2.814 2.814 0 0 0 .349.035",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 47",d:"M320.836 479.556a2.732 2.732 0 0 1-2.732-2.732 8.2 8.2 0 0 0-16.391 0 2.732 2.732 0 0 1-5.464 0 13.66 13.66 0 0 1 27.319 0 2.732 2.732 0 0 1-2.732 2.732",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 48",d:"M364.546 618.881h65.565a21.854 21.854 0 0 0 21.855-21.855v-76.492h-65.565a21.854 21.854 0 0 0-21.855 21.855Z",fill:"#ffff50",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 49",d:"M435.596 554.41h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0-54.434h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0 21.652h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m16.369-100.959c-.013 0-.024-.007-.037-.005-3.377.115-4.974 3.492-6.384 6.472-1.471 3.114-2.608 5.139-4.473 5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932 3.053-6.346 5.646-1.5 2.762-2.529 4.442-4.5 4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879 2.606-6.3 4.808-1.5 2.328-2.552 3.746-4.551 3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807 2.153-6.224 3.954-1.346 1.709-2.4 3.062-4.621 2.977a1.094 1.094 0 0 0-.079 2.186c3.3.11 4.967-1.967 6.417-3.81 1.286-1.635 2.4-3.045 4.582-3.12 2.1-.09 3.091 1.218 4.584 3.327 1.417 2 3.026 4.277 6.263 4.394 3.391.114 5.022-2.42 6.467-4.663 1.292-2 2.406-3.734 4.535-3.807 1.959-.073 3.026 1.475 4.529 4.022 1.417 2.4 3.023 5.121 6.324 5.241 3.415.118 5.064-2.863 6.5-5.5 1.245-2.282 2.419-4.437 4.5-4.509 1.959-.046 2.981 1.743 4.492 4.732 1.412 2.79 3.013 5.95 6.365 6.071h.185c3.348 0 4.937-3.36 6.343-6.331 1.245-2.634 2.423-5.114 4.444-5.216Z",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 50",d:"M342.691 618.882h43.71v-43.71h-43.71Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("g",{"data-name":"Group 8",transform:"rotate(-14.98 2188.845 -1120.376)"},r.createElement("rect",{"data-name":"Rectangle 3",width:92.361,height:36.462,rx:2,fill:"#d8d8d8"}),r.createElement("g",{"data-name":"Group 2",transform:"translate(1.531 23.03)",fill:"#4a4a4a"},r.createElement("rect",{"data-name":"Rectangle 4",width:5.336,height:5.336,rx:1,transform:"translate(16.797)"}),r.createElement("rect",{"data-name":"Rectangle 5",width:5.336,height:5.336,rx:1,transform:"translate(23.12)"}),r.createElement("rect",{"data-name":"Rectangle 6",width:5.336,height:5.336,rx:1,transform:"translate(29.444)"}),r.createElement("rect",{"data-name":"Rectangle 7",width:5.336,height:5.336,rx:1,transform:"translate(35.768)"}),r.createElement("rect",{"data-name":"Rectangle 8",width:5.336,height:5.336,rx:1,transform:"translate(42.091)"}),r.createElement("rect",{"data-name":"Rectangle 9",width:5.336,height:5.336,rx:1,transform:"translate(48.415)"}),r.createElement("rect",{"data-name":"Rectangle 10",width:5.336,height:5.336,rx:1,transform:"translate(54.739)"}),r.createElement("rect",{"data-name":"Rectangle 11",width:5.336,height:5.336,rx:1,transform:"translate(61.063)"}),r.createElement("rect",{"data-name":"Rectangle 12",width:5.336,height:5.336,rx:1,transform:"translate(67.386)"}),r.createElement("path",{"data-name":"Path 51",d:"M1.093 0h13.425a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H1.093A1.093 1.093 0 0 1 0 4.243v-3.15A1.093 1.093 0 0 1 1.093 0ZM75 0h13.426a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H75a1.093 1.093 0 0 1-1.093-1.093v-3.15A1.093 1.093 0 0 1 75 0Z",fillRule:"evenodd"})),r.createElement("g",{"data-name":"Group 3",transform:"translate(1.531 10.261)",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 52",d:"M1.093 0h5.125A1.093 1.093 0 0 1 7.31 1.093v3.149a1.093 1.093 0 0 1-1.092 1.093H1.093A1.093 1.093 0 0 1 0 4.242V1.093A1.093 1.093 0 0 1 1.093 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 13",width:5.336,height:5.336,rx:1,transform:"translate(8.299)"}),r.createElement("rect",{"data-name":"Rectangle 14",width:5.336,height:5.336,rx:1,transform:"translate(14.623)"}),r.createElement("rect",{"data-name":"Rectangle 15",width:5.336,height:5.336,rx:1,transform:"translate(20.947)"}),r.createElement("rect",{"data-name":"Rectangle 16",width:5.336,height:5.336,rx:1,transform:"translate(27.271)"}),r.createElement("rect",{"data-name":"Rectangle 17",width:5.336,height:5.336,rx:1,transform:"translate(33.594)"}),r.createElement("rect",{"data-name":"Rectangle 18",width:5.336,height:5.336,rx:1,transform:"translate(39.918)"}),r.createElement("rect",{"data-name":"Rectangle 19",width:5.336,height:5.336,rx:1,transform:"translate(46.242)"}),r.createElement("rect",{"data-name":"Rectangle 20",width:5.336,height:5.336,rx:1,transform:"translate(52.565)"}),r.createElement("rect",{"data-name":"Rectangle 21",width:5.336,height:5.336,rx:1,transform:"translate(58.888)"}),r.createElement("rect",{"data-name":"Rectangle 22",width:5.336,height:5.336,rx:1,transform:"translate(65.212)"}),r.createElement("rect",{"data-name":"Rectangle 23",width:5.336,height:5.336,rx:1,transform:"translate(71.536)"}),r.createElement("rect",{"data-name":"Rectangle 24",width:5.336,height:5.336,rx:1,transform:"translate(77.859)"}),r.createElement("rect",{"data-name":"Rectangle 25",width:5.336,height:5.336,rx:1,transform:"translate(84.183)"})),r.createElement("g",{"data-name":"Group 4",transform:"rotate(180 45.525 4.773)",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 53",d:"M1.093 0h5.126a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H1.093A1.093 1.093 0 0 1 0 4.243v-3.15A1.093 1.093 0 0 1 1.093 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 26",width:5.336,height:5.336,rx:1,transform:"translate(8.299)"}),r.createElement("rect",{"data-name":"Rectangle 27",width:5.336,height:5.336,rx:1,transform:"translate(14.623)"}),r.createElement("rect",{"data-name":"Rectangle 28",width:5.336,height:5.336,rx:1,transform:"translate(20.947)"}),r.createElement("rect",{"data-name":"Rectangle 29",width:5.336,height:5.336,rx:1,transform:"translate(27.271)"}),r.createElement("rect",{"data-name":"Rectangle 30",width:5.336,height:5.336,rx:1,transform:"translate(33.594)"}),r.createElement("rect",{"data-name":"Rectangle 31",width:5.336,height:5.336,rx:1,transform:"translate(39.918)"}),r.createElement("rect",{"data-name":"Rectangle 32",width:5.336,height:5.336,rx:1,transform:"translate(46.242)"}),r.createElement("rect",{"data-name":"Rectangle 33",width:5.336,height:5.336,rx:1,transform:"translate(52.565)"}),r.createElement("rect",{"data-name":"Rectangle 34",width:5.336,height:5.336,rx:1,transform:"translate(58.889)"}),r.createElement("rect",{"data-name":"Rectangle 35",width:5.336,height:5.336,rx:1,transform:"translate(65.213)"}),r.createElement("rect",{"data-name":"Rectangle 36",width:5.336,height:5.336,rx:1,transform:"translate(71.537)"}),r.createElement("rect",{"data-name":"Rectangle 37",width:5.336,height:5.336,rx:1,transform:"translate(77.86)"}),r.createElement("rect",{"data-name":"Rectangle 38",width:5.336,height:5.336,rx:1,transform:"translate(84.183)"}),r.createElement("rect",{"data-name":"Rectangle 39",width:5.336,height:5.336,rx:1,transform:"translate(8.299)"}),r.createElement("rect",{"data-name":"Rectangle 40",width:5.336,height:5.336,rx:1,transform:"translate(14.623)"}),r.createElement("rect",{"data-name":"Rectangle 41",width:5.336,height:5.336,rx:1,transform:"translate(20.947)"}),r.createElement("rect",{"data-name":"Rectangle 42",width:5.336,height:5.336,rx:1,transform:"translate(27.271)"}),r.createElement("rect",{"data-name":"Rectangle 43",width:5.336,height:5.336,rx:1,transform:"translate(33.594)"}),r.createElement("rect",{"data-name":"Rectangle 44",width:5.336,height:5.336,rx:1,transform:"translate(39.918)"}),r.createElement("rect",{"data-name":"Rectangle 45",width:5.336,height:5.336,rx:1,transform:"translate(46.242)"}),r.createElement("rect",{"data-name":"Rectangle 46",width:5.336,height:5.336,rx:1,transform:"translate(52.565)"}),r.createElement("rect",{"data-name":"Rectangle 47",width:5.336,height:5.336,rx:1,transform:"translate(58.889)"}),r.createElement("rect",{"data-name":"Rectangle 48",width:5.336,height:5.336,rx:1,transform:"translate(65.213)"}),r.createElement("rect",{"data-name":"Rectangle 49",width:5.336,height:5.336,rx:1,transform:"translate(71.537)"}),r.createElement("rect",{"data-name":"Rectangle 50",width:5.336,height:5.336,rx:1,transform:"translate(77.86)"}),r.createElement("rect",{"data-name":"Rectangle 51",width:5.336,height:5.336,rx:1,transform:"translate(84.183)"})),r.createElement("g",{"data-name":"Group 6",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 54",d:"M2.624 16.584h7.3a1.093 1.093 0 0 1 1.092 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093h-7.3a1.093 1.093 0 0 1-1.092-1.093v-3.149a1.093 1.093 0 0 1 1.093-1.094Z",fillRule:"evenodd"}),r.createElement("g",{"data-name":"Group 5",transform:"translate(12.202 16.584)"},r.createElement("rect",{"data-name":"Rectangle 52",width:5.336,height:5.336,rx:1}),r.createElement("rect",{"data-name":"Rectangle 53",width:5.336,height:5.336,rx:1,transform:"translate(6.324)"}),r.createElement("rect",{"data-name":"Rectangle 54",width:5.336,height:5.336,rx:1,transform:"translate(12.647)"}),r.createElement("rect",{"data-name":"Rectangle 55",width:5.336,height:5.336,rx:1,transform:"translate(18.971)"}),r.createElement("rect",{"data-name":"Rectangle 56",width:5.336,height:5.336,rx:1,transform:"translate(25.295)"}),r.createElement("rect",{"data-name":"Rectangle 57",width:5.336,height:5.336,rx:1,transform:"translate(31.619)"}),r.createElement("rect",{"data-name":"Rectangle 58",width:5.336,height:5.336,rx:1,transform:"translate(37.942)"}),r.createElement("rect",{"data-name":"Rectangle 59",width:5.336,height:5.336,rx:1,transform:"translate(44.265)"}),r.createElement("rect",{"data-name":"Rectangle 60",width:5.336,height:5.336,rx:1,transform:"translate(50.589)"}),r.createElement("rect",{"data-name":"Rectangle 61",width:5.336,height:5.336,rx:1,transform:"translate(56.912)"}),r.createElement("rect",{"data-name":"Rectangle 62",width:5.336,height:5.336,rx:1,transform:"translate(63.236)"})),r.createElement("path",{"data-name":"Path 55",d:"M83.053 16.584h6.906a1.093 1.093 0 0 1 1.091 1.093v3.15a1.093 1.093 0 0 1-1.091 1.093h-6.907a1.093 1.093 0 0 1-1.093-1.093v-3.149a1.093 1.093 0 0 1 1.093-1.094Z",fillRule:"evenodd"})),r.createElement("g",{"data-name":"Group 7",transform:"translate(1.531 29.627)",fill:"#4a4a4a"},r.createElement("rect",{"data-name":"Rectangle 63",width:5.336,height:5.336,rx:1}),r.createElement("rect",{"data-name":"Rectangle 64",width:5.336,height:5.336,rx:1,transform:"translate(6.324)"}),r.createElement("rect",{"data-name":"Rectangle 65",width:5.336,height:5.336,rx:1,transform:"translate(12.647)"}),r.createElement("rect",{"data-name":"Rectangle 66",width:5.336,height:5.336,rx:1,transform:"translate(18.971)"}),r.createElement("path",{"data-name":"Path 56",d:"M26.387 0h30.422a1.093 1.093 0 0 1 1.093 1.093v3.151a1.093 1.093 0 0 1-1.093 1.093H26.387a1.093 1.093 0 0 1-1.093-1.093V1.093A1.093 1.093 0 0 1 26.387 0Zm33.594 0h3.942a1.093 1.093 0 0 1 1.093 1.093v3.151a1.093 1.093 0 0 1-1.093 1.093h-3.942a1.093 1.093 0 0 1-1.093-1.093V1.093A1.093 1.093 0 0 1 59.981 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 67",width:5.336,height:5.336,rx:1,transform:"translate(66.003)"}),r.createElement("rect",{"data-name":"Rectangle 68",width:5.336,height:5.336,rx:1,transform:"translate(72.327)"}),r.createElement("rect",{"data-name":"Rectangle 69",width:5.336,height:5.336,rx:1,transform:"translate(84.183)"}),r.createElement("path",{"data-name":"Path 57",d:"M78.254 2.273v-1.18A1.093 1.093 0 0 1 79.347 0h3.15a1.093 1.093 0 0 1 1.093 1.093v1.18Z"}),r.createElement("path",{"data-name":"Path 58",d:"M83.591 3.063v1.18a1.093 1.093 0 0 1-1.093 1.093h-3.15a1.093 1.093 0 0 1-1.093-1.093v-1.18Z"})),r.createElement("rect",{"data-name":"Rectangle 70",width:88.927,height:2.371,rx:1.085,transform:"translate(1.925 1.17)",fill:"#4a4a4a"}),r.createElement("rect",{"data-name":"Rectangle 71",width:4.986,height:1.581,rx:.723,transform:"translate(4.1 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 72",width:4.986,height:1.581,rx:.723,transform:"translate(10.923 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 73",width:4.986,height:1.581,rx:.723,transform:"translate(16.173 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 74",width:4.986,height:1.581,rx:.723,transform:"translate(21.421 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 75",width:4.986,height:1.581,rx:.723,transform:"translate(26.671 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 76",width:4.986,height:1.581,rx:.723,transform:"translate(33.232 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 77",width:4.986,height:1.581,rx:.723,transform:"translate(38.48 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 78",width:4.986,height:1.581,rx:.723,transform:"translate(43.73 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 79",width:4.986,height:1.581,rx:.723,transform:"translate(48.978 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 80",width:4.986,height:1.581,rx:.723,transform:"translate(55.54 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 81",width:4.986,height:1.581,rx:.723,transform:"translate(60.788 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 82",width:4.986,height:1.581,rx:.723,transform:"translate(66.038 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 83",width:4.986,height:1.581,rx:.723,transform:"translate(72.599 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 84",width:4.986,height:1.581,rx:.723,transform:"translate(77.847 1.566)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 85",width:4.986,height:1.581,rx:.723,transform:"translate(83.097 1.566)",fill:"#d8d8d8",opacity:.136})),r.createElement("path",{"data-name":"Path 59",d:"M408.256 591.563a5.439 5.439 0 0 0-.7.07c-.042-.164-.081-.329-.127-.493a5.457 5.457 0 1 0-5.4-9.372q-.181-.185-.366-.367a5.454 5.454 0 1 0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467 5.467 0 1 0-10.788 0c-.162.042-.325.08-.486.126a5.457 5.457 0 1 0-9.384 5.4 21.843 21.843 0 1 0 36.421 21.02 5.452 5.452 0 1 0 .7-10.858",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 60",d:"M342.691 553.317h43.71v-21.855h-43.71Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 61",d:"M397.328 545.121a2.732 2.732 0 1 0 0-5.464 2.811 2.811 0 0 0-.349.035c-.022-.082-.04-.164-.063-.246a2.733 2.733 0 0 0-1.052-5.253 2.7 2.7 0 0 0-1.648.566q-.09-.093-.184-.184a2.7 2.7 0 0 0 .553-1.633 2.732 2.732 0 0 0-5.245-1.07 10.928 10.928 0 1 0 0 21.031 2.732 2.732 0 0 0 5.245-1.07 2.7 2.7 0 0 0-.553-1.633q.093-.09.184-.184a2.7 2.7 0 0 0 1.648.566 2.732 2.732 0 0 0 1.052-5.253c.023-.081.042-.164.063-.246a2.811 2.811 0 0 0 .349.035",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 62",d:"M408.256 464.531a2.967 2.967 0 0 1-.535-.055 2.754 2.754 0 0 1-.514-.153 2.838 2.838 0 0 1-.471-.251 4.139 4.139 0 0 1-.415-.339 3.2 3.2 0 0 1-.338-.415 2.7 2.7 0 0 1-.459-1.517 2.968 2.968 0 0 1 .055-.535 3.152 3.152 0 0 1 .152-.514 2.874 2.874 0 0 1 .252-.47 2.633 2.633 0 0 1 .753-.754 2.837 2.837 0 0 1 .471-.251 2.753 2.753 0 0 1 .514-.153 2.527 2.527 0 0 1 1.071 0 2.654 2.654 0 0 1 .983.4 4.139 4.139 0 0 1 .415.339 4.019 4.019 0 0 1 .339.415 2.786 2.786 0 0 1 .251.47 2.864 2.864 0 0 1 .208 1.049 2.77 2.77 0 0 1-.8 1.934 4.139 4.139 0 0 1-.415.339 2.722 2.722 0 0 1-1.519.459m21.855-1.366a2.789 2.789 0 0 1-1.935-.8 4.162 4.162 0 0 1-.338-.415 2.7 2.7 0 0 1-.459-1.519 2.789 2.789 0 0 1 .8-1.934 4.139 4.139 0 0 1 .415-.339 2.838 2.838 0 0 1 .471-.251 2.752 2.752 0 0 1 .514-.153 2.527 2.527 0 0 1 1.071 0 2.654 2.654 0 0 1 .983.4 4.139 4.139 0 0 1 .415.339 2.79 2.79 0 0 1 .8 1.934 3.069 3.069 0 0 1-.055.535 2.779 2.779 0 0 1-.153.514 3.885 3.885 0 0 1-.251.47 4.02 4.02 0 0 1-.339.415 4.138 4.138 0 0 1-.415.339 2.722 2.722 0 0 1-1.519.459",fillRule:"evenodd"}))))}},8066:(e,t,a)=>{a.d(t,{Z:()=>c});var l,r=a(7294);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var l in a)Object.prototype.hasOwnProperty.call(a,l)&&(e[l]=a[l])}return e},n.apply(this,arguments)}const c=e=>{let{title:t,titleId:a,...c}=e;return r.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",width:1041.277,height:554.141,viewBox:"0 0 1041.277 554.141","aria-labelledby":a},c),void 0===t?r.createElement("title",{id:a},"Powered by React"):t?r.createElement("title",{id:a},t):null,l||(l=r.createElement("g",{"data-name":"Group 24"},r.createElement("g",{"data-name":"Group 23",transform:"translate(-.011 -.035)"},r.createElement("path",{"data-name":"Path 299",d:"M961.48 438.21q-1.74 3.75-3.47 7.4-2.7 5.67-5.33 11.12c-.78 1.61-1.56 3.19-2.32 4.77-8.6 17.57-16.63 33.11-23.45 45.89a73.21 73.21 0 0 1-63.81 38.7l-151.65 1.65h-1.6l-13 .14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107 1.16-95.51 1-11.11.12-69 .75h-.08l-44.75.48h-.48l-141.5 1.53-42.33.46a87.991 87.991 0 0 1-10.79-.54c-1.22-.14-2.44-.3-3.65-.49a87.38 87.38 0 0 1-51.29-27.54c-18.21-20.03-31.46-43.4-40.36-68.76q-1.93-5.49-3.6-11.12c-30.81-104.15 6.75-238.52 74.35-328.44q4.25-5.64 8.64-11l.07-.08c20.79-25.52 44.1-46.84 68.93-62 44-26.91 92.75-34.49 140.7-11.9 40.57 19.12 78.45 28.11 115.17 30.55 3.71.24 7.42.42 11.11.53 84.23 2.65 163.17-27.7 255.87-47.29 3.69-.78 7.39-1.55 11.12-2.28C763 .54 836.36-6.4 923.6 8.19a189.089 189.089 0 0 1 26.76 6.4q5.77 1.86 11.12 4c41.64 16.94 64.35 48.24 74 87.46q1.37 5.46 2.37 11.11c17.11 94.34-33 228.16-76.37 321.05Z",fill:"#f2f2f2"}),r.createElement("path",{"data-name":"Path 300",d:"M497.02 445.61a95.21 95.21 0 0 1-1.87 11.12h93.7v-11.12Zm-78.25 62.81 11.11-.09v-27.47c-3.81-.17-7.52-.34-11.11-.52Zm-232.92-62.81v11.12h198.5v-11.12Zm849.68-339.52h-74V18.6q-5.35-2.17-11.12-4v91.49H696.87V13.67c-3.73.73-7.43 1.5-11.12 2.28v90.14H429.88V63.24c-3.69-.11-7.4-.29-11.11-.53v43.38H162.9v-62c-24.83 15.16-48.14 36.48-68.93 62h-.07v.08q-4.4 5.4-8.64 11h8.64v328.44h-83q1.66 5.63 3.6 11.12h79.39v93.62a87 87 0 0 0 12.2 2.79c1.21.19 2.43.35 3.65.49a87.991 87.991 0 0 0 10.79.54l42.33-.46v-97h255.91v94.21l11.11-.12v-94.07h255.87v91.36l11.12-.12v-91.24h253.49v4.77c.76-1.58 1.54-3.16 2.32-4.77q2.63-5.45 5.33-11.12 1.73-3.64 3.47-7.4v-321h76.42q-1.01-5.69-2.37-11.12ZM162.9 445.61V117.17h255.87v328.44Zm267 0V117.17h255.85v328.44Zm520.48 0H696.87V117.17h253.49Z",opacity:.1}),r.createElement("path",{"data-name":"Path 301",d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l46.65-28 93.6-.78 2-.01.66-.01 2-.03 44.94-.37 2.01-.01.64-.01 2-.01 14.41-.12.38-.01 35.55-.3h.29l277.4-2.34 6.79-.05h.68l5.18-.05 37.65-.31 2-.03 1.85-.02h.96l11.71-.09 2.32-.03 3.11-.02 9.75-.09 15.47-.13 2-.02 3.48-.02h.65l74.71-.64Z",fill:"#65617d"}),r.createElement("path",{"data-name":"Path 302",d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l46.65-28 93.6-.78 2-.01.66-.01 2-.03 44.94-.37 2.01-.01.64-.01 2-.01 14.41-.12.38-.01 35.55-.3h.29l277.4-2.34 6.79-.05h.68l5.18-.05 37.65-.31 2-.03 1.85-.02h.96l11.71-.09 2.32-.03 3.11-.02 9.75-.09 15.47-.13 2-.02 3.48-.02h.65l74.71-.64Z",opacity:.2}),r.createElement("path",{"data-name":"Path 303",d:"M296.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 304",d:"M296.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z",opacity:.1}),r.createElement("path",{"data-name":"Path 305",d:"M298.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Rectangle 137",fill:"#3f3d56",d:"M680.92 483.65h47.17v31.5h-47.17z"}),r.createElement("path",{"data-name":"Rectangle 138",opacity:.1,d:"M680.92 483.65h47.17v31.5h-47.17z"}),r.createElement("path",{"data-name":"Rectangle 139",fill:"#3f3d56",d:"M678.92 483.65h47.17v31.5h-47.17z"}),r.createElement("path",{"data-name":"Path 306",d:"M298.09 483.65v4.97l-47.17 1.26v-6.23Z",opacity:.1}),r.createElement("path",{"data-name":"Path 307",d:"M381.35 312.36v168.2a4 4 0 0 1-3.85 3.95l-191.65 5.1h-.05a4 4 0 0 1-3.95-3.95v-173.3a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.95 3.95Z",fill:"#65617d"}),r.createElement("path",{"data-name":"Path 308",d:"M185.85 308.41v181.2h-.05a4 4 0 0 1-3.95-3.95v-173.3a4 4 0 0 1 3.95-3.95Z",opacity:.1}),r.createElement("path",{"data-name":"Path 309",d:"M194.59 319.15h177.5V467.4l-177.5 4Z",fill:"#39374d"}),r.createElement("path",{"data-name":"Path 310",d:"M726.09 483.65v6.41l-47.17-1.26v-5.15Z",opacity:.1}),r.createElement("path",{"data-name":"Path 311",d:"M788.35 312.36v173.3a4 4 0 0 1-4 3.95l-191.69-5.1a4 4 0 0 1-3.85-3.95v-168.2a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.99 3.95Z",fill:"#65617d"}),r.createElement("path",{"data-name":"Path 312",d:"M788.35 312.36v173.3a4 4 0 0 1-4 3.95v-181.2a4 4 0 0 1 4 3.95Z",opacity:.1}),r.createElement("path",{"data-name":"Path 313",d:"M775.59 319.15h-177.5V467.4l177.5 4Z",fill:"#39374d"}),r.createElement("path",{"data-name":"Path 314",d:"M583.85 312.36v168.2a4 4 0 0 1-3.85 3.95l-191.65 5.1a4 4 0 0 1-4-3.95v-173.3a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.95 3.95Z",fill:"#65617d"}),r.createElement("path",{"data-name":"Path 315",d:"M397.09 319.15h177.5V467.4l-177.5 4Z",fill:"#4267b2"}),r.createElement("path",{"data-name":"Path 316",d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5 4.4-.02.98-.01Z",opacity:.1}),r.createElement("circle",{"data-name":"Ellipse 111",cx:51.33,cy:51.33,r:51.33,transform:"translate(435.93 246.82)",fill:"#fbbebe"}),r.createElement("path",{"data-name":"Path 317",d:"M538.6 377.16s-99.5 12-90 0c3.44-4.34 4.39-17.2 4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41 77-8.5c-4 13.13-2.69 31.57.35 48.88.89 5.05 1.92 10 3 14.7a344.66 344.66 0 0 0 9.65 33.92Z",fill:"#fbbebe"}),r.createElement("path",{"data-name":"Path 318",d:"M506.13 373.09c11.51-2.13 23.7-6 34.53-1.54 2.85 1.17 5.47 2.88 8.39 3.86s6.12 1.22 9.16 1.91c10.68 2.42 19.34 10.55 24.9 20s8.44 20.14 11.26 30.72l6.9 25.83c6 22.45 12 45.09 13.39 68.3a2437.506 2437.506 0 0 1-250.84 1.43c5.44-10.34 11-21.31 10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34 6.57-13.39 9.64-20.22 8.75-19.52 1.94-45.79 17.32-60.65 6.92-6.68 17-9.21 26.63-8.89 12.28.41 24.85 4.24 37 6.11 15.56 2.36 30.26 3.76 45.94.88Z",fill:"#ff6584"}),r.createElement("path",{"data-name":"Path 319",d:"m637.03 484.26-.1 1.43v.1l-.17 2.3-1.33 18.51-1.61 22.3-.46 6.28-1 13.44v.17l-107 1-175.59 1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53 10.53 0 0 1 11.42-10.17c4.72.4 10.85.89 18.18 1.41l3 .22c42.33 2.94 120.56 6.74 199.5 2 1.66-.09 3.33-.19 5-.31 12.24-.77 24.47-1.76 36.58-3a10.53 10.53 0 0 1 11.6 11.23Z",opacity:.1}),r.createElement("path",{"data-name":"Path 320",d:"M349.74 552.53v-.84l175.62-1.91 107-1h.3v-.17l1-13.44.43-6 1.64-22.61 1.29-17.9v-.44a10.617 10.617 0 0 0-.11-2.47.3.3 0 0 0 0-.1 10.391 10.391 0 0 0-2-4.64 10.54 10.54 0 0 0-9.42-4 937.419 937.419 0 0 1-36.58 3c-1.67.12-3.34.22-5 .31-78.94 4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54 10.54 0 0 0-11.24 8.53 11 11 0 0 0-.18 1.64l-.68 22.16-.93 28.07-.44 14.36v1.12Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 321",d:"m637.33 491.27-1.23 15.33-1.83 22.85-.46 5.72-1 12.81-.06.64v.17l-.15 1.48.11-1.48h-.29l-107 1-175.65 1.9v-.28l.49-14.36 1-28.06.64-18.65a6.36 6.36 0 0 1 3.06-5.25 6.25 6.25 0 0 1 3.78-.9c2.1.17 4.68.37 7.69.59 4.89.36 10.92.78 17.94 1.22 13 .82 29.31 1.7 48 2.42 52 2 122.2 2.67 188.88-3.17 3-.26 6.1-.55 9.13-.84a6.26 6.26 0 0 1 3.48.66 5.159 5.159 0 0 1 .86.54 6.14 6.14 0 0 1 2 2.46 3.564 3.564 0 0 1 .25.61 6.279 6.279 0 0 1 .36 2.59Z",opacity:.1}),r.createElement("path",{"data-name":"Path 322",d:"M298.1 504.96v3.19a6.13 6.13 0 0 1-3.5 5.54l-40.1.77a6.12 6.12 0 0 1-3.57-5.57v-3Z",opacity:.1}),r.createElement("path",{"data-name":"Path 323",d:"m298.59 515.57-52.25 1v-8.67l52.25-1Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 324",d:"m298.59 515.57-52.25 1v-8.67l52.25-1Z",opacity:.1}),r.createElement("path",{"data-name":"Path 325",d:"m300.59 515.57-52.25 1v-8.67l52.25-1Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 326",d:"M679.22 506.96v3.19a6.13 6.13 0 0 0 3.5 5.54l40.1.77a6.12 6.12 0 0 0 3.57-5.57v-3Z",opacity:.1}),r.createElement("path",{"data-name":"Path 327",d:"m678.72 517.57 52.25 1v-8.67l-52.25-1Z",opacity:.1}),r.createElement("path",{"data-name":"Path 328",d:"m676.72 517.57 52.25 1v-8.67l-52.25-1Z",fill:"#3f3d56"}),r.createElement("path",{"data-name":"Path 329",d:"M454.79 313.88c.08 7-3.16 13.6-5.91 20.07a163.491 163.491 0 0 0-12.66 74.71c.73 11 2.58 22 .73 32.9s-8.43 21.77-19 24.9c17.53 10.45 41.26 9.35 57.76-2.66 8.79-6.4 15.34-15.33 21.75-24.11a97.86 97.86 0 0 1-13.31 44.75 103.43 103.43 0 0 0 73.51-40.82c4.31-5.81 8.06-12.19 9.72-19.23 3.09-13-1.22-26.51-4.51-39.5a266.055 266.055 0 0 1-6.17-33c-.43-3.56-.78-7.22.1-10.7 1-4.07 3.67-7.51 5.64-11.22 5.6-10.54 5.73-23.3 2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47 1.48-16.14 8.32-22 15.34-4.59 5.46-15.81 15.71-16.6 22.86-.72 6.59 5.1 17.63 6.09 24.58 1.3 9 2.22 6 7.3 11.52 3.21 3.42 5.28 7.37 5.34 12.16Z",fill:"#3f3d56"})),r.createElement("path",{"data-name":"Path 40",d:"M280.139 370.832h43.635v17.662h-43.635Z",fill:"#fff",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 41",d:"M240.66 428.493a10.377 10.377 0 0 1-8.989-5.195 10.377 10.377 0 0 0 8.988 15.584h10.391v-10.389Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 42",d:"m287.402 373.625 36.373-2.273v-5.195a10.389 10.389 0 0 0-10.39-10.389h-46.75l-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249h-.034l-2.152-2.151a1.5 1.5 0 0 0-2.508.672l-.696 2.653-2.7-.723a1.5 1.5 0 0 0-1.836 1.837l.722 2.7-2.65.71a1.5 1.5 0 0 0-.673 2.509l2.152 2.152v.033l-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.25 1.282-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3a10.389 10.389 0 0 0 10.389 10.34h62.335a10.389 10.389 0 0 0 10.39-10.39v-41.557l-36.373-2.273a5.53 5.53 0 0 1 0-11.038",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 43",d:"M302.996 438.882h15.584v-20.779h-15.584Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 44",d:"M328.97 425.895a2.582 2.582 0 0 0-.332.033c-.02-.078-.038-.156-.06-.234a2.594 2.594 0 1 0-2.567-4.455q-.086-.088-.174-.175a2.593 2.593 0 1 0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6 2.6 0 1 0-5.128 0c-.077.02-.154.038-.231.06a2.594 2.594 0 1 0-4.461 2.569 10.384 10.384 0 1 0 17.314 9.992 2.592 2.592 0 1 0 .332-5.161",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 45",d:"M308.191 407.713h15.584v-10.389h-15.584Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 46",d:"M328.969 403.818a1.3 1.3 0 1 0 0-2.6 1.336 1.336 0 0 0-.166.017l-.03-.117a1.3 1.3 0 0 0-.5-2.5 1.285 1.285 0 0 0-.783.269l-.087-.087a1.285 1.285 0 0 0 .263-.776 1.3 1.3 0 0 0-2.493-.509 5.195 5.195 0 1 0 0 10 1.3 1.3 0 0 0 2.493-.509 1.285 1.285 0 0 0-.263-.776l.087-.087a1.285 1.285 0 0 0 .783.269 1.3 1.3 0 0 0 .5-2.5c.011-.038.02-.078.03-.117a1.337 1.337 0 0 0 .166.017",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 47",d:"M261.439 372.65a1.3 1.3 0 0 1-1.3-1.3 3.9 3.9 0 0 0-7.792 0 1.3 1.3 0 1 1-2.6 0 6.494 6.494 0 0 1 12.987 0 1.3 1.3 0 0 1-1.3 1.3",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 48",d:"M282.217 438.882h31.168a10.389 10.389 0 0 0 10.389-10.389V392.13h-31.168a10.389 10.389 0 0 0-10.389 10.389Z",fill:"#ffff50",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 49",d:"M315.993 408.233h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0-25.877h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.293h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m7.782-47.993h-.018c-1.605.055-2.365 1.66-3.035 3.077-.7 1.48-1.24 2.443-2.126 2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344 1.451-3.017 2.684-.715 1.313-1.2 2.112-2.141 2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319 1.239-2.994 2.286-.713 1.106-1.213 1.781-2.164 1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.815 3.815 0 0 0-2.959 1.879c-.64.812-1.14 1.456-2.2 1.415a.52.52 0 0 0-.037 1.039 3.588 3.588 0 0 0 3.05-1.811c.611-.777 1.139-1.448 2.178-1.483 1-.043 1.47.579 2.179 1.582.674.953 1.438 2.033 2.977 2.089 1.612.054 2.387-1.151 3.074-2.217.614-.953 1.144-1.775 2.156-1.81.931-.035 1.438.7 2.153 1.912.674 1.141 1.437 2.434 3.006 2.491 1.623.056 2.407-1.361 3.09-2.616.592-1.085 1.15-2.109 2.14-2.143.931-.022 1.417.829 2.135 2.249.671 1.326 1.432 2.828 3.026 2.886h.088c1.592 0 2.347-1.6 3.015-3.01.592-1.252 1.152-2.431 2.113-2.479Z",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 50",d:"M271.828 438.882h20.779v-20.779h-20.779Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("g",{"data-name":"Group 8",transform:"rotate(-14.98 1643.944 -873.93)"},r.createElement("rect",{"data-name":"Rectangle 3",width:43.906,height:17.333,rx:2,fill:"#d8d8d8"}),r.createElement("g",{"data-name":"Group 2",transform:"translate(.728 10.948)",fill:"#4a4a4a"},r.createElement("rect",{"data-name":"Rectangle 4",width:2.537,height:2.537,rx:1,transform:"translate(7.985)"}),r.createElement("rect",{"data-name":"Rectangle 5",width:2.537,height:2.537,rx:1,transform:"translate(10.991)"}),r.createElement("rect",{"data-name":"Rectangle 6",width:2.537,height:2.537,rx:1,transform:"translate(13.997)"}),r.createElement("rect",{"data-name":"Rectangle 7",width:2.537,height:2.537,rx:1,transform:"translate(17.003)"}),r.createElement("rect",{"data-name":"Rectangle 8",width:2.537,height:2.537,rx:1,transform:"translate(20.009)"}),r.createElement("rect",{"data-name":"Rectangle 9",width:2.537,height:2.537,rx:1,transform:"translate(23.015)"}),r.createElement("rect",{"data-name":"Rectangle 10",width:2.537,height:2.537,rx:1,transform:"translate(26.021)"}),r.createElement("rect",{"data-name":"Rectangle 11",width:2.537,height:2.537,rx:1,transform:"translate(29.028)"}),r.createElement("rect",{"data-name":"Rectangle 12",width:2.537,height:2.537,rx:1,transform:"translate(32.034)"}),r.createElement("path",{"data-name":"Path 51",d:"M.519 0H6.9a.519.519 0 0 1 .521.52v1.5a.519.519 0 0 1-.519.519H.519A.519.519 0 0 1 0 2.017V.519A.519.519 0 0 1 .519 0Zm35.134 0h6.383a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519h-6.384a.519.519 0 0 1-.519-.519v-1.5A.519.519 0 0 1 35.652 0Z",fillRule:"evenodd"})),r.createElement("g",{"data-name":"Group 3",transform:"translate(.728 4.878)",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 52",d:"M.519 0h2.437a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519H.519A.519.519 0 0 1 0 2.017V.519A.519.519 0 0 1 .519 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 13",width:2.537,height:2.537,rx:1,transform:"translate(3.945)"}),r.createElement("rect",{"data-name":"Rectangle 14",width:2.537,height:2.537,rx:1,transform:"translate(6.951)"}),r.createElement("rect",{"data-name":"Rectangle 15",width:2.537,height:2.537,rx:1,transform:"translate(9.958)"}),r.createElement("rect",{"data-name":"Rectangle 16",width:2.537,height:2.537,rx:1,transform:"translate(12.964)"}),r.createElement("rect",{"data-name":"Rectangle 17",width:2.537,height:2.537,rx:1,transform:"translate(15.97)"}),r.createElement("rect",{"data-name":"Rectangle 18",width:2.537,height:2.537,rx:1,transform:"translate(18.976)"}),r.createElement("rect",{"data-name":"Rectangle 19",width:2.537,height:2.537,rx:1,transform:"translate(21.982)"}),r.createElement("rect",{"data-name":"Rectangle 20",width:2.537,height:2.537,rx:1,transform:"translate(24.988)"}),r.createElement("rect",{"data-name":"Rectangle 21",width:2.537,height:2.537,rx:1,transform:"translate(27.994)"}),r.createElement("rect",{"data-name":"Rectangle 22",width:2.537,height:2.537,rx:1,transform:"translate(31)"}),r.createElement("rect",{"data-name":"Rectangle 23",width:2.537,height:2.537,rx:1,transform:"translate(34.006)"}),r.createElement("rect",{"data-name":"Rectangle 24",width:2.537,height:2.537,rx:1,transform:"translate(37.012)"}),r.createElement("rect",{"data-name":"Rectangle 25",width:2.537,height:2.537,rx:1,transform:"translate(40.018)"})),r.createElement("g",{"data-name":"Group 4",transform:"rotate(180 21.642 2.269)",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 53",d:"M.519 0h2.437a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519H.519A.519.519 0 0 1 0 2.017V.519A.519.519 0 0 1 .519 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 26",width:2.537,height:2.537,rx:1,transform:"translate(3.945)"}),r.createElement("rect",{"data-name":"Rectangle 27",width:2.537,height:2.537,rx:1,transform:"translate(6.951)"}),r.createElement("rect",{"data-name":"Rectangle 28",width:2.537,height:2.537,rx:1,transform:"translate(9.958)"}),r.createElement("rect",{"data-name":"Rectangle 29",width:2.537,height:2.537,rx:1,transform:"translate(12.964)"}),r.createElement("rect",{"data-name":"Rectangle 30",width:2.537,height:2.537,rx:1,transform:"translate(15.97)"}),r.createElement("rect",{"data-name":"Rectangle 31",width:2.537,height:2.537,rx:1,transform:"translate(18.976)"}),r.createElement("rect",{"data-name":"Rectangle 32",width:2.537,height:2.537,rx:1,transform:"translate(21.982)"}),r.createElement("rect",{"data-name":"Rectangle 33",width:2.537,height:2.537,rx:1,transform:"translate(24.988)"}),r.createElement("rect",{"data-name":"Rectangle 34",width:2.537,height:2.537,rx:1,transform:"translate(27.994)"}),r.createElement("rect",{"data-name":"Rectangle 35",width:2.537,height:2.537,rx:1,transform:"translate(31.001)"}),r.createElement("rect",{"data-name":"Rectangle 36",width:2.537,height:2.537,rx:1,transform:"translate(34.007)"}),r.createElement("rect",{"data-name":"Rectangle 37",width:2.537,height:2.537,rx:1,transform:"translate(37.013)"}),r.createElement("rect",{"data-name":"Rectangle 38",width:2.537,height:2.537,rx:1,transform:"translate(40.018)"}),r.createElement("rect",{"data-name":"Rectangle 39",width:2.537,height:2.537,rx:1,transform:"translate(3.945)"}),r.createElement("rect",{"data-name":"Rectangle 40",width:2.537,height:2.537,rx:1,transform:"translate(6.951)"}),r.createElement("rect",{"data-name":"Rectangle 41",width:2.537,height:2.537,rx:1,transform:"translate(9.958)"}),r.createElement("rect",{"data-name":"Rectangle 42",width:2.537,height:2.537,rx:1,transform:"translate(12.964)"}),r.createElement("rect",{"data-name":"Rectangle 43",width:2.537,height:2.537,rx:1,transform:"translate(15.97)"}),r.createElement("rect",{"data-name":"Rectangle 44",width:2.537,height:2.537,rx:1,transform:"translate(18.976)"}),r.createElement("rect",{"data-name":"Rectangle 45",width:2.537,height:2.537,rx:1,transform:"translate(21.982)"}),r.createElement("rect",{"data-name":"Rectangle 46",width:2.537,height:2.537,rx:1,transform:"translate(24.988)"}),r.createElement("rect",{"data-name":"Rectangle 47",width:2.537,height:2.537,rx:1,transform:"translate(27.994)"}),r.createElement("rect",{"data-name":"Rectangle 48",width:2.537,height:2.537,rx:1,transform:"translate(31.001)"}),r.createElement("rect",{"data-name":"Rectangle 49",width:2.537,height:2.537,rx:1,transform:"translate(34.007)"}),r.createElement("rect",{"data-name":"Rectangle 50",width:2.537,height:2.537,rx:1,transform:"translate(37.013)"}),r.createElement("rect",{"data-name":"Rectangle 51",width:2.537,height:2.537,rx:1,transform:"translate(40.018)"})),r.createElement("g",{"data-name":"Group 6",fill:"#4a4a4a"},r.createElement("path",{"data-name":"Path 54",d:"M1.247 7.883h3.47a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519h-3.47A.519.519 0 0 1 .728 9.9V8.403a.519.519 0 0 1 .519-.52Z",fillRule:"evenodd"}),r.createElement("g",{"data-name":"Group 5",transform:"translate(5.801 7.883)"},r.createElement("rect",{"data-name":"Rectangle 52",width:2.537,height:2.537,rx:1}),r.createElement("rect",{"data-name":"Rectangle 53",width:2.537,height:2.537,rx:1,transform:"translate(3.006)"}),r.createElement("rect",{"data-name":"Rectangle 54",width:2.537,height:2.537,rx:1,transform:"translate(6.012)"}),r.createElement("rect",{"data-name":"Rectangle 55",width:2.537,height:2.537,rx:1,transform:"translate(9.018)"}),r.createElement("rect",{"data-name":"Rectangle 56",width:2.537,height:2.537,rx:1,transform:"translate(12.025)"}),r.createElement("rect",{"data-name":"Rectangle 57",width:2.537,height:2.537,rx:1,transform:"translate(15.031)"}),r.createElement("rect",{"data-name":"Rectangle 58",width:2.537,height:2.537,rx:1,transform:"translate(18.037)"}),r.createElement("rect",{"data-name":"Rectangle 59",width:2.537,height:2.537,rx:1,transform:"translate(21.042)"}),r.createElement("rect",{"data-name":"Rectangle 60",width:2.537,height:2.537,rx:1,transform:"translate(24.049)"}),r.createElement("rect",{"data-name":"Rectangle 61",width:2.537,height:2.537,rx:1,transform:"translate(27.055)"}),r.createElement("rect",{"data-name":"Rectangle 62",width:2.537,height:2.537,rx:1,transform:"translate(30.061)"})),r.createElement("path",{"data-name":"Path 55",d:"M39.482 7.883h3.28a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519h-3.281a.519.519 0 0 1-.519-.521V8.403a.519.519 0 0 1 .519-.52Z",fillRule:"evenodd"})),r.createElement("g",{"data-name":"Group 7",transform:"translate(.728 14.084)",fill:"#4a4a4a"},r.createElement("rect",{"data-name":"Rectangle 63",width:2.537,height:2.537,rx:1}),r.createElement("rect",{"data-name":"Rectangle 64",width:2.537,height:2.537,rx:1,transform:"translate(3.006)"}),r.createElement("rect",{"data-name":"Rectangle 65",width:2.537,height:2.537,rx:1,transform:"translate(6.012)"}),r.createElement("rect",{"data-name":"Rectangle 66",width:2.537,height:2.537,rx:1,transform:"translate(9.018)"}),r.createElement("path",{"data-name":"Path 56",d:"M12.543 0h14.462a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519H12.543a.519.519 0 0 1-.519-.52V.519A.519.519 0 0 1 12.543 0Zm15.97 0h1.874a.519.519 0 0 1 .519.519v1.5a.519.519 0 0 1-.519.519h-1.874a.519.519 0 0 1-.519-.519v-1.5A.519.519 0 0 1 28.513 0Z",fillRule:"evenodd"}),r.createElement("rect",{"data-name":"Rectangle 67",width:2.537,height:2.537,rx:1,transform:"translate(31.376)"}),r.createElement("rect",{"data-name":"Rectangle 68",width:2.537,height:2.537,rx:1,transform:"translate(34.382)"}),r.createElement("rect",{"data-name":"Rectangle 69",width:2.537,height:2.537,rx:1,transform:"translate(40.018)"}),r.createElement("path",{"data-name":"Path 57",d:"M37.199 1.08V.519A.519.519 0 0 1 37.718 0h1.499a.519.519 0 0 1 .519.519v.561Z"}),r.createElement("path",{"data-name":"Path 58",d:"M39.737 1.456v.561a.519.519 0 0 1-.519.519h-1.499a.519.519 0 0 1-.519-.519v-.561Z"})),r.createElement("rect",{"data-name":"Rectangle 70",width:42.273,height:1.127,rx:.564,transform:"translate(.915 .556)",fill:"#4a4a4a"}),r.createElement("rect",{"data-name":"Rectangle 71",width:2.37,height:.752,rx:.376,transform:"translate(1.949 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 72",width:2.37,height:.752,rx:.376,transform:"translate(5.193 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 73",width:2.37,height:.752,rx:.376,transform:"translate(7.688 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 74",width:2.37,height:.752,rx:.376,transform:"translate(10.183 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 75",width:2.37,height:.752,rx:.376,transform:"translate(12.679 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 76",width:2.37,height:.752,rx:.376,transform:"translate(15.797 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 77",width:2.37,height:.752,rx:.376,transform:"translate(18.292 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 78",width:2.37,height:.752,rx:.376,transform:"translate(20.788 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 79",width:2.37,height:.752,rx:.376,transform:"translate(23.283 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 80",width:2.37,height:.752,rx:.376,transform:"translate(26.402 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 81",width:2.37,height:.752,rx:.376,transform:"translate(28.897 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 82",width:2.37,height:.752,rx:.376,transform:"translate(31.393 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 83",width:2.37,height:.752,rx:.376,transform:"translate(34.512 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 84",width:2.37,height:.752,rx:.376,transform:"translate(37.007 .744)",fill:"#d8d8d8",opacity:.136}),r.createElement("rect",{"data-name":"Rectangle 85",width:2.37,height:.752,rx:.376,transform:"translate(39.502 .744)",fill:"#d8d8d8",opacity:.136})),r.createElement("path",{"data-name":"Path 59",d:"M302.996 425.895a2.583 2.583 0 0 0-.332.033c-.02-.078-.038-.156-.06-.234a2.594 2.594 0 1 0-2.567-4.455q-.086-.088-.174-.175a2.593 2.593 0 1 0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6 2.6 0 1 0-5.128 0c-.077.02-.154.038-.231.06a2.594 2.594 0 1 0-4.461 2.569 10.384 10.384 0 1 0 17.314 9.992 2.592 2.592 0 1 0 .332-5.161",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 60",d:"M271.828 407.713h20.779v-10.389h-20.779Z",fill:"#3ecc5f",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 61",d:"M297.801 403.818a1.3 1.3 0 1 0 0-2.6 1.338 1.338 0 0 0-.166.017l-.03-.117a1.3 1.3 0 0 0-.5-2.5 1.285 1.285 0 0 0-.783.269l-.087-.087a1.285 1.285 0 0 0 .263-.776 1.3 1.3 0 0 0-2.493-.509 5.195 5.195 0 1 0 0 10 1.3 1.3 0 0 0 2.493-.509 1.285 1.285 0 0 0-.263-.776l.087-.087a1.285 1.285 0 0 0 .783.269 1.3 1.3 0 0 0 .5-2.5c.011-.038.02-.078.03-.117a1.335 1.335 0 0 0 .166.017",fill:"#44d860",fillRule:"evenodd"}),r.createElement("path",{"data-name":"Path 62",d:"M302.997 365.507a1.41 1.41 0 0 1-.255-.026 1.309 1.309 0 0 1-.244-.073 1.349 1.349 0 0 1-.224-.119 1.967 1.967 0 0 1-.2-.161 1.52 1.52 0 0 1-.161-.2 1.282 1.282 0 0 1-.218-.722 1.41 1.41 0 0 1 .026-.255 1.5 1.5 0 0 1 .072-.244 1.364 1.364 0 0 1 .12-.223 1.252 1.252 0 0 1 .358-.358 1.349 1.349 0 0 1 .224-.119 1.309 1.309 0 0 1 .244-.073 1.2 1.2 0 0 1 .509 0 1.262 1.262 0 0 1 .468.192 1.968 1.968 0 0 1 .2.161 1.908 1.908 0 0 1 .161.2 1.322 1.322 0 0 1 .12.223 1.361 1.361 0 0 1 .1.5 1.317 1.317 0 0 1-.379.919 1.968 1.968 0 0 1-.2.161 1.346 1.346 0 0 1-.223.119 1.332 1.332 0 0 1-.5.1m10.389-.649a1.326 1.326 0 0 1-.92-.379 1.979 1.979 0 0 1-.161-.2 1.282 1.282 0 0 1-.218-.722 1.326 1.326 0 0 1 .379-.919 1.967 1.967 0 0 1 .2-.161 1.351 1.351 0 0 1 .224-.119 1.308 1.308 0 0 1 .244-.073 1.2 1.2 0 0 1 .509 0 1.262 1.262 0 0 1 .468.192 1.967 1.967 0 0 1 .2.161 1.326 1.326 0 0 1 .379.919 1.461 1.461 0 0 1-.026.255 1.323 1.323 0 0 1-.073.244 1.847 1.847 0 0 1-.119.223 1.911 1.911 0 0 1-.161.2 1.967 1.967 0 0 1-.2.161 1.294 1.294 0 0 1-.722.218",fillRule:"evenodd"}),r.createElement("g",{transform:"translate(466.3 278.56)",fill:"#61dafb"},r.createElement("path",{"data-name":"Path 330",d:"M263.668 117.179c0-5.827-7.3-11.35-18.487-14.775 2.582-11.4 1.434-20.477-3.622-23.382a7.861 7.861 0 0 0-4.016-1v4a4.152 4.152 0 0 1 2.044.466c2.439 1.4 3.5 6.724 2.672 13.574-.2 1.685-.52 3.461-.914 5.272a86.9 86.9 0 0 0-11.386-1.954 87.469 87.469 0 0 0-7.459-8.965c5.845-5.433 11.332-8.41 15.062-8.41V78c-4.931 0-11.386 3.514-17.913 9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712 0 9.216 2.959 15.062 8.356a84.687 84.687 0 0 0-7.405 8.947 83.732 83.732 0 0 0-11.4 1.972 54.136 54.136 0 0 1-.932-5.2c-.843-6.85.2-12.175 2.618-13.592a3.991 3.991 0 0 1 2.062-.466v-4a8 8 0 0 0-4.052 1c-5.039 2.9-6.168 11.96-3.568 23.328-11.153 3.443-18.415 8.947-18.415 14.757 0 5.828 7.3 11.35 18.487 14.775-2.582 11.4-1.434 20.477 3.622 23.382a7.882 7.882 0 0 0 4.034 1c4.931 0 11.386-3.514 17.913-9.611 6.527 6.061 12.982 9.539 17.913 9.539a8 8 0 0 0 4.052-1c5.039-2.9 6.168-11.96 3.568-23.328 11.111-3.42 18.373-8.943 18.373-14.752Zm-23.346-11.96a80.235 80.235 0 0 1-2.421 7.083 83.185 83.185 0 0 0-2.349-4.3 96.877 96.877 0 0 0-2.582-4.2c2.547.377 5.004.843 7.353 1.417Zm-8.212 19.1c-1.4 2.421-2.833 4.716-4.321 6.85a93.313 93.313 0 0 1-8.1.359c-2.708 0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136a94.058 94.058 0 0 1 3.712-7.154c1.4-2.421 2.833-4.716 4.321-6.85a93.313 93.313 0 0 1 8.1-.359c2.708 0 5.415.126 8.069.341q2.232 3.2 4.339 6.814 2.044 3.523 3.73 7.136a101.198 101.198 0 0 1-3.712 7.15Zm5.792-2.331a76.525 76.525 0 0 1 2.474 7.136 80.22 80.22 0 0 1-7.387 1.434c.879-1.381 1.757-2.8 2.582-4.25a96.22 96.22 0 0 0 2.329-4.324Zm-18.182 19.128a73.921 73.921 0 0 1-4.985-5.738c1.614.072 3.263.126 4.931.126 1.685 0 3.353-.036 4.985-.126a69.993 69.993 0 0 1-4.931 5.738Zm-13.34-10.561c-2.546-.377-5-.843-7.352-1.417a80.235 80.235 0 0 1 2.421-7.083c.735 1.434 1.506 2.869 2.349 4.3s1.702 2.837 2.582 4.2Zm13.25-37.314a73.924 73.924 0 0 1 4.985 5.738 110.567 110.567 0 0 0-4.931-.126c-1.686 0-3.353.036-4.985.126a69.993 69.993 0 0 1 4.931-5.738ZM206.362 103.8a100.567 100.567 0 0 0-4.913 8.55 76.525 76.525 0 0 1-2.474-7.136 90.158 90.158 0 0 1 7.387-1.414Zm-16.227 22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383 10.454-9.073c1.542-.663 3.228-1.255 4.967-1.811a86.122 86.122 0 0 0 4.034 10.92 84.9 84.9 0 0 0-3.981 10.866 53.804 53.804 0 0 1-5.021-1.826Zm9.647 25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a86.9 86.9 0 0 0 11.386 1.954 87.465 87.465 0 0 0 7.459 8.965c-5.845 5.433-11.332 8.41-15.062 8.41a4.279 4.279 0 0 1-2.026-.48Zm42.532-13.663c.843 6.85-.2 12.175-2.618 13.592a3.99 3.99 0 0 1-2.062.466c-3.712 0-9.216-2.959-15.062-8.356a84.689 84.689 0 0 0 7.405-8.947 83.731 83.731 0 0 0 11.4-1.972 50.194 50.194 0 0 1 .936 5.22Zm6.9-11.96c-1.542.663-3.228 1.255-4.967 1.811a86.12 86.12 0 0 0-4.034-10.92 84.9 84.9 0 0 0 3.981-10.866 56.777 56.777 0 0 1 5.039 1.829c6.348 2.708 10.454 6.258 10.454 9.073-.017 2.818-4.123 6.386-10.471 9.076Z"}),r.createElement("path",{"data-name":"Path 331",d:"M201.718 78.072Z"}),r.createElement("circle",{"data-name":"Ellipse 112",cx:8.194,cy:8.194,r:8.194,transform:"translate(211.472 108.984)"}),r.createElement("path",{"data-name":"Path 332",d:"M237.525 78.018Z"})))))}},4002:(e,t,a)=>{a.d(t,{Z:()=>B});var l,r,n,c,h,m,d,i,f,s,o,g,E,p,v,R,w,x,u,Z,M,y,P,b,q,A,V,H,G,N,O,k,S,_,j,z,C=a(7294);function F(){return F=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var l in a)Object.prototype.hasOwnProperty.call(a,l)&&(e[l]=a[l])}return e},F.apply(this,arguments)}const B=e=>{let{title:t,titleId:a,...B}=e;return C.createElement("svg",F({xmlns:"http://www.w3.org/2000/svg",width:1129,height:663,viewBox:"0 0 1129 663","aria-labelledby":a},B),void 0===t?C.createElement("title",{id:a},"Focus on What Matters"):t?C.createElement("title",{id:a},t):null,l||(l=C.createElement("circle",{cx:321,cy:321,r:321,fill:"#f2f2f2"})),r||(r=C.createElement("ellipse",{cx:559,cy:635.5,rx:514,ry:27.5,fill:"#3f3d56"})),n||(n=C.createElement("ellipse",{cx:558,cy:627,rx:460,ry:22,opacity:.2})),c||(c=C.createElement("path",{fill:"#3f3d56",d:"M131 152.5h840v50H131z"})),h||(h=C.createElement("path",{d:"M131 608.83a21.67 21.67 0 0 0 21.67 21.67h796.66A21.67 21.67 0 0 0 971 608.83V177.5H131ZM949.33 117.5H152.67A21.67 21.67 0 0 0 131 139.17v38.33h840v-38.33a21.67 21.67 0 0 0-21.67-21.67Z",fill:"#3f3d56"})),m||(m=C.createElement("path",{d:"M949.33 117.5H152.67A21.67 21.67 0 0 0 131 139.17v38.33h840v-38.33a21.67 21.67 0 0 0-21.67-21.67Z",opacity:.2})),d||(d=C.createElement("circle",{cx:181,cy:147.5,r:13,fill:"#3f3d56"})),i||(i=C.createElement("circle",{cx:217,cy:147.5,r:13,fill:"#3f3d56"})),f||(f=C.createElement("circle",{cx:253,cy:147.5,r:13,fill:"#3f3d56"})),s||(s=C.createElement("rect",{x:168,y:213.5,width:337,height:386,rx:5.335,fill:"#606060"})),o||(o=C.createElement("rect",{x:603,y:272.5,width:284,height:22,rx:5.476,fill:"#2e8555"})),g||(g=C.createElement("rect",{x:537,y:352.5,width:416,height:15,rx:5.476,fill:"#2e8555"})),E||(E=C.createElement("rect",{x:537,y:396.5,width:416,height:15,rx:5.476,fill:"#2e8555"})),p||(p=C.createElement("rect",{x:537,y:440.5,width:416,height:15,rx:5.476,fill:"#2e8555"})),v||(v=C.createElement("rect",{x:537,y:484.5,width:416,height:15,rx:5.476,fill:"#2e8555"})),R||(R=C.createElement("rect",{x:865,y:552.5,width:88,height:26,rx:7.028,fill:"#3ecc5f"})),w||(w=C.createElement("path",{d:"M1053.103 506.116a30.114 30.114 0 0 0 3.983-15.266c0-13.797-8.544-24.98-19.083-24.98s-19.082 11.183-19.082 24.98a30.114 30.114 0 0 0 3.983 15.266 31.248 31.248 0 0 0 0 30.532 31.248 31.248 0 0 0 0 30.532 31.248 31.248 0 0 0 0 30.532 30.114 30.114 0 0 0-3.983 15.266c0 13.797 8.543 24.981 19.082 24.981s19.083-11.184 19.083-24.98a30.114 30.114 0 0 0-3.983-15.267 31.248 31.248 0 0 0 0-30.532 31.248 31.248 0 0 0 0-30.532 31.248 31.248 0 0 0 0-30.532Z",fill:"#3f3d56"})),x||(x=C.createElement("ellipse",{cx:1038.003,cy:460.318,rx:19.083,ry:24.981,fill:"#3f3d56"})),u||(u=C.createElement("ellipse",{cx:1038.003,cy:429.786,rx:19.083,ry:24.981,fill:"#3f3d56"})),Z||(Z=C.createElement("path",{d:"M1109.439 220.845a91.61 91.61 0 0 0 7.106-10.461l-50.14-8.235 54.228.403a91.566 91.566 0 0 0 1.746-72.426l-72.755 37.742 67.097-49.321A91.413 91.413 0 1 0 965.75 220.845a91.458 91.458 0 0 0-10.425 16.67l65.087 33.814-69.4-23.292a91.46 91.46 0 0 0 14.738 85.837 91.406 91.406 0 1 0 143.689 0 91.418 91.418 0 0 0 0-113.03Z",fill:"#3ecc5f",fillRule:"evenodd"})),M||(M=C.createElement("path",{d:"M946.188 277.36a91.013 91.013 0 0 0 19.562 56.514 91.406 91.406 0 1 0 143.689 0c12.25-15.553-163.25-66.774-163.25-56.515Z",opacity:.1})),y||(y=C.createElement("path",{d:"M330.12 342.936h111.474v45.12H330.12Z",fill:"#fff",fillRule:"evenodd"})),P||(P=C.createElement("path",{d:"M229.263 490.241a26.51 26.51 0 0 1-22.963-13.27 26.51 26.51 0 0 0 22.963 39.812h26.541V490.24Z",fill:"#3ecc5f",fillRule:"evenodd"})),b||(b=C.createElement("path",{d:"m348.672 350.07 92.922-5.807v-13.27a26.54 26.54 0 0 0-26.541-26.542H295.616l-3.318-5.746a3.83 3.83 0 0 0-6.635 0l-3.318 5.746-3.317-5.746a3.83 3.83 0 0 0-6.636 0l-3.317 5.746-3.318-5.746a3.83 3.83 0 0 0-6.635 0l-3.318 5.746c-.03 0-.056.004-.086.004l-5.497-5.495a3.83 3.83 0 0 0-6.407 1.717l-1.817 6.773-6.89-1.847a3.83 3.83 0 0 0-4.691 4.693l1.844 6.891-6.77 1.814a3.832 3.832 0 0 0-1.72 6.41l5.497 5.497c0 .028-.004.055-.004.085l-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318a26.54 26.54 0 0 0 26.541 26.542h159.249a26.54 26.54 0 0 0 26.541-26.542V384.075l-92.922-5.807a14.126 14.126 0 0 1 0-28.197",fill:"#3ecc5f",fillRule:"evenodd"})),q||(q=C.createElement("path",{d:"M388.511 516.783h39.812V463.7h-39.812Z",fill:"#3ecc5f",fillRule:"evenodd"})),A||(A=C.createElement("path",{d:"M454.865 483.606a6.602 6.602 0 0 0-.848.085c-.05-.2-.099-.4-.154-.599a6.627 6.627 0 1 0-6.557-11.382q-.22-.225-.445-.446a6.624 6.624 0 1 0-11.397-6.564c-.196-.055-.394-.102-.59-.152a6.64 6.64 0 1 0-13.101 0c-.197.05-.394.097-.59.152a6.628 6.628 0 1 0-11.398 6.564 26.528 26.528 0 1 0 44.232 25.528 6.621 6.621 0 1 0 .848-13.186",fill:"#44d860",fillRule:"evenodd"})),V||(V=C.createElement("path",{d:"M401.782 437.158h39.812v-26.541h-39.812Z",fill:"#3ecc5f",fillRule:"evenodd"})),H||(H=C.createElement("path",{d:"M454.865 427.205a3.318 3.318 0 0 0 0-6.635 3.411 3.411 0 0 0-.424.042c-.026-.1-.049-.199-.077-.298a3.319 3.319 0 0 0-1.278-6.38 3.282 3.282 0 0 0-2 .688q-.11-.113-.224-.223a3.282 3.282 0 0 0 .672-1.983 3.318 3.318 0 0 0-6.37-1.299 13.27 13.27 0 1 0 0 25.541 3.318 3.318 0 0 0 6.37-1.3 3.282 3.282 0 0 0-.672-1.982q.114-.11.223-.223a3.282 3.282 0 0 0 2.001.688 3.318 3.318 0 0 0 1.278-6.38c.028-.098.05-.199.077-.298a3.413 3.413 0 0 0 .424.042",fill:"#44d860",fillRule:"evenodd"})),G||(G=C.createElement("path",{d:"M282.345 347.581a3.318 3.318 0 0 1-3.317-3.318 9.953 9.953 0 1 0-19.906 0 3.318 3.318 0 1 1-6.636 0 16.588 16.588 0 1 1 33.177 0 3.318 3.318 0 0 1-3.318 3.318",fillRule:"evenodd"})),N||(N=C.createElement("path",{d:"M335.428 516.783h79.625a26.54 26.54 0 0 0 26.541-26.542v-92.895H361.97a26.54 26.54 0 0 0-26.542 26.542Z",fill:"#ffff50",fillRule:"evenodd"})),O||(O=C.createElement("path",{d:"M421.714 438.485h-66.406a1.327 1.327 0 0 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.542h-66.406a1.327 1.327 0 1 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.541h-66.406a1.327 1.327 0 1 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0-66.106h-66.406a1.327 1.327 0 0 1 0-2.655h66.406a1.327 1.327 0 0 1 0 2.655m0 26.294h-66.406a1.327 1.327 0 0 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.542h-66.406a1.327 1.327 0 0 1 0-2.655h66.406a1.327 1.327 0 0 1 0 2.655m19.88-122.607c-.016 0-.03-.008-.045-.007-4.1.14-6.04 4.241-7.753 7.86-1.786 3.783-3.168 6.242-5.432 6.167-2.506-.09-3.94-2.922-5.458-5.918-1.744-3.443-3.734-7.347-7.913-7.201-4.042.138-5.99 3.708-7.706 6.857-1.828 3.355-3.071 5.394-5.47 5.3-2.557-.093-3.916-2.395-5.488-5.06-1.753-2.967-3.78-6.304-7.878-6.19-3.973.137-5.925 3.166-7.648 5.84-1.822 2.826-3.098 4.549-5.527 4.447-2.618-.093-3.97-2.004-5.535-4.216-1.757-2.486-3.737-5.3-7.823-5.163-3.886.133-5.838 2.615-7.56 4.802-1.634 2.075-2.91 3.718-5.611 3.615a1.328 1.328 0 1 0-.096 2.654c4.004.134 6.032-2.389 7.793-4.628 1.562-1.985 2.91-3.698 5.564-3.789 2.556-.108 3.754 1.48 5.567 4.041 1.721 2.434 3.675 5.195 7.606 5.337 4.118.138 6.099-2.94 7.853-5.663 1.569-2.434 2.923-4.535 5.508-4.624 2.38-.088 3.674 1.792 5.5 4.885 1.722 2.916 3.671 6.22 7.68 6.365 4.147.143 6.15-3.477 7.895-6.682 1.511-2.77 2.938-5.388 5.466-5.475 2.38-.056 3.62 2.116 5.456 5.746 1.714 3.388 3.658 7.226 7.73 7.373l.224.004c4.066 0 5.996-4.08 7.704-7.689 1.511-3.198 2.942-6.21 5.397-6.334Z",fillRule:"evenodd"})),k||(k=C.createElement("path",{d:"M308.887 516.783h53.083V463.7h-53.083Z",fill:"#3ecc5f",fillRule:"evenodd"})),S||(S=C.createElement("path",{d:"M388.511 483.606a6.602 6.602 0 0 0-.848.085c-.05-.2-.098-.4-.154-.599a6.627 6.627 0 1 0-6.557-11.382q-.22-.225-.444-.446a6.624 6.624 0 1 0-11.397-6.564c-.197-.055-.394-.102-.59-.152a6.64 6.64 0 1 0-13.102 0c-.196.05-.394.097-.59.152a6.628 6.628 0 1 0-11.397 6.564 26.528 26.528 0 1 0 44.231 25.528 6.621 6.621 0 1 0 .848-13.186",fill:"#44d860",fillRule:"evenodd"})),_||(_=C.createElement("path",{d:"M308.887 437.158h53.083v-26.541h-53.083Z",fill:"#3ecc5f",fillRule:"evenodd"})),j||(j=C.createElement("path",{d:"M375.24 427.205a3.318 3.318 0 1 0 0-6.635 3.411 3.411 0 0 0-.423.042c-.026-.1-.05-.199-.077-.298a3.319 3.319 0 0 0-1.278-6.38 3.282 3.282 0 0 0-2.001.688q-.11-.113-.223-.223a3.282 3.282 0 0 0 .671-1.983 3.318 3.318 0 0 0-6.37-1.299 13.27 13.27 0 1 0 0 25.541 3.318 3.318 0 0 0 6.37-1.3 3.282 3.282 0 0 0-.671-1.982q.113-.11.223-.223a3.282 3.282 0 0 0 2.001.688 3.318 3.318 0 0 0 1.278-6.38c.028-.098.05-.199.077-.298a3.413 3.413 0 0 0 .423.042",fill:"#44d860",fillRule:"evenodd"})),z||(z=C.createElement("path",{d:"M388.511 329.334a3.603 3.603 0 0 1-.65-.067 3.344 3.344 0 0 1-.624-.185 3.447 3.447 0 0 1-.572-.306 5.027 5.027 0 0 1-.504-.411 3.887 3.887 0 0 1-.41-.504 3.275 3.275 0 0 1-.558-1.845 3.602 3.602 0 0 1 .067-.65 3.826 3.826 0 0 1 .184-.624 3.489 3.489 0 0 1 .307-.57 3.197 3.197 0 0 1 .914-.916 3.447 3.447 0 0 1 .572-.305 3.344 3.344 0 0 1 .624-.186 3.07 3.07 0 0 1 1.3 0 3.223 3.223 0 0 1 1.195.49 5.028 5.028 0 0 1 .504.412 4.88 4.88 0 0 1 .411.504 3.382 3.382 0 0 1 .306.571 3.478 3.478 0 0 1 .252 1.274 3.364 3.364 0 0 1-.969 2.349 5.027 5.027 0 0 1-.504.411 3.306 3.306 0 0 1-1.845.558m26.542-1.66a3.388 3.388 0 0 1-2.35-.968 5.042 5.042 0 0 1-.41-.504 3.275 3.275 0 0 1-.558-1.845 3.387 3.387 0 0 1 .967-2.349 5.026 5.026 0 0 1 .505-.411 3.447 3.447 0 0 1 .572-.305 3.343 3.343 0 0 1 .623-.186 3.07 3.07 0 0 1 1.3 0 3.224 3.224 0 0 1 1.195.49 5.026 5.026 0 0 1 .504.412 3.388 3.388 0 0 1 .97 2.35 3.726 3.726 0 0 1-.067.65 3.374 3.374 0 0 1-.186.623 4.715 4.715 0 0 1-.305.57 4.88 4.88 0 0 1-.412.505 5.026 5.026 0 0 1-.504.412 3.305 3.305 0 0 1-1.844.557",fillRule:"evenodd"})))}},3261:(e,t,a)=>{a.r(t),a.d(t,{default:()=>E});var l=a(7294),r=a(6010),n=a(9960),c=a(2263),h=a(7961),m=a(7462);const d={features:"features_t9lD",featureSvg:"featureSvg_GfXr",row:"row_kvGa",col:"col_NUvg"},i=[{title:".NET Core Powered",subtitle:"Robust & Scalable",Svg:a(9722).Z,description:l.createElement(l.Fragment,null,"Unlock the full potential of the Ethereum blockchain with the Nethermind client, designed for speed, reliability, and ease of use.")},{title:"Lightning Fast",subtitle:"High-Speed Synchronization",Svg:a(4002).Z,description:l.createElement(l.Fragment,null,"Experience blazing fast synchronization times and minimal latency, ensuring your node stays in sync with the Ethereum network and your dApps run smoothly.")},{title:"User-Friendly",subtitle:"Effortless Setup & Configuration",Svg:a(8066).Z,description:l.createElement(l.Fragment,null,"Get started quickly with our intuitive interface and easy-to-follow documentation. Nethermind makes managing your Ethereum node simpler than ever.")}];function f(e){let{Svg:t,title:a,description:n,subtitle:c}=e;return l.createElement("div",{className:(0,r.Z)("row")},l.createElement("div",{className:(0,r.Z)("col")},l.createElement("div",null,l.createElement("h3",null,a),l.createElement("h4",null,c),l.createElement("p",null,n))))}function s(){return l.createElement("section",{className:d.features},l.createElement("div",{className:"container"},l.createElement("div",{className:"row"},i.map(((e,t)=>l.createElement(f,(0,m.Z)({key:t},e)))))))}const o={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function g(){const{siteConfig:e}=(0,c.Z)();return l.createElement("header",{className:(0,r.Z)("hero hero--primary",o.heroBanner)},l.createElement("div",{className:"container"},l.createElement("img",{src:"img/logo.svg",alt:"Image description",width:"220"}),l.createElement("p",{className:"hero__subtitle"},e.tagline),l.createElement("div",{className:o.buttons},l.createElement(n.Z,{className:"button button--secondary button--lg",to:"/docs"},"Documentation \ud83d\udcdc"))))}function E(){const{siteConfig:e}=(0,c.Z)();return l.createElement(h.Z,{title:`Hello from ${e.title}`,description:"Description will go into a meta tag in <head />"},l.createElement(g,null),l.createElement("main",null,l.createElement(s,null)))}}}]); \ No newline at end of file diff --git a/assets/js/c7e79d4b.b0bca42b.js b/assets/js/c7e79d4b.b0bca42b.js new file mode 100644 index 000000000..13085e3f4 --- /dev/null +++ b/assets/js/c7e79d4b.b0bca42b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4053],{3905:(t,e,r)=>{r.d(e,{Zo:()=>d,kt:()=>u});var n=r(7294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function o(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function l(t,e){if(null==t)return{};var r,n,a=function(t,e){if(null==t)return{};var r,n,a={},i=Object.keys(t);for(n=0;n<i.length;n++)r=i[n],e.indexOf(r)>=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}var m=n.createContext({}),s=function(t){var e=n.useContext(m),r=e;return t&&(r="function"==typeof t?t(e):o(o({},e),t)),r},d=function(t){var e=s(t.components);return n.createElement(m.Provider,{value:e},t.children)},p="mdxType",c={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},f=n.forwardRef((function(t,e){var r=t.components,a=t.mdxType,i=t.originalType,m=t.parentName,d=l(t,["components","mdxType","originalType","parentName"]),p=s(r),f=a,u=p["".concat(m,".").concat(f)]||p[f]||c[f]||i;return r?n.createElement(u,o(o({ref:e},d),{},{components:r})):n.createElement(u,o({ref:e},d))}));function u(t,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var i=r.length,o=new Array(i);o[0]=f;var l={};for(var m in e)hasOwnProperty.call(e,m)&&(l[m]=e[m]);l.originalType=t,l[p]="string"==typeof t?t:a,o[1]=l;for(var s=2;s<i;s++)o[s]=r[s];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},7374:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>m,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));const i={},o="Metrics",l={unversionedId:"fundamentals/configuration/metrics",id:"fundamentals/configuration/metrics",title:"Metrics",description:"Configuration of the metrics provided by a Nethermind node for both, the Prometheus and the dotnet-counters.",source:"@site/docs/02-fundamentals/04-configuration/metrics.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/metrics",permalink:"/docs/fundamentals/configuration/metrics",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/metrics.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Merge",permalink:"/docs/fundamentals/configuration/merge"},next:{title:"Mev",permalink:"/docs/fundamentals/configuration/mev"}},m={},s=[],d={toc:s},p="wrapper";function c(t){let{components:e,...r}=t;return(0,a.kt)(p,(0,n.Z)({},d,r,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"metrics"},"Metrics"),(0,a.kt)("p",null,"Configuration of the metrics provided by a Nethermind node for both, the Prometheus and the dotnet-counters."),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"CountersEnabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_METRICSCONFIG_COUNTERSENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If 'true',the node publishes metrics using .NET diagnostics that can be collected with dotnet-counters."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_METRICSCONFIG_ENABLED"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If 'true',the node publishes various metrics to Prometheus Pushgateway at given interval."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"EnableDbSizeMetrics"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If set, will push db size metrics"),(0,a.kt)("td",{parentName:"tr",align:"left"},"true")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ExposePort"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_METRICSCONFIG_EXPOSEPORT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"If set, the node exposes Prometheus metrics on the given port."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"IntervalSeconds"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_METRICSCONFIG_INTERVALSECONDS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Defines how often metrics are pushed to Prometheus"),(0,a.kt)("td",{parentName:"tr",align:"left"},"5")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"NodeName"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_METRICSCONFIG_NODENAME"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Name displayed in the Grafana dashboard"),(0,a.kt)("td",{parentName:"tr",align:"left"},'"Nethermind"')),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"PushGatewayUrl"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Prometheus Pushgateway URL."),(0,a.kt)("td",{parentName:"tr",align:"left"})))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c7e82fdb.77ea596a.js b/assets/js/c7e82fdb.77ea596a.js new file mode 100644 index 000000000..57b082256 --- /dev/null +++ b/assets/js/c7e82fdb.77ea596a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7690],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),u=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=u(a),m=r,b=p["".concat(s,".").concat(m)]||p[m]||d[m]||l;return a?n.createElement(b,i(i({ref:t},c),{},{components:a})):n.createElement(b,i({ref:t},c))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:r,i[1]=o;for(var u=2;u<l;u++)i[u]=a[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:a,className:i}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>w});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),o=a(6550),s=a(1980),u=a(7392),c=a(12);function p(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function d(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??p(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:a}=e;const n=(0,o.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,s._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function f(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=d(e),[i,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[s,u]=b({queryString:a,groupId:n}),[p,f]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,c.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),h=(()=>{const e=s??p;return m({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{h&&o(h)}),[h]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),f(e)}),[u,f,l]),tabValues:l}}var h=a(2389);const k={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:a,selectedValue:o,selectValue:s,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:p}=(0,i.o5)(),d=e=>{const t=e.currentTarget,a=c.indexOf(t),n=u[a].value;n!==o&&(p(t),s(n))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const a=c.indexOf(e.currentTarget)+1;t=c[a]??c[0];break}case"ArrowLeft":{const a=c.indexOf(e.currentTarget)-1;t=c[a]??c[c.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},u.map((e=>{let{value:t,label:a,attributes:i}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:d},i,{className:(0,l.Z)("tabs__item",k.tabItem,i?.className,{"tabs__item--active":o===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function v(e){const t=f(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",k.tabList)},r.createElement(y,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function w(e){const t=(0,h.Z)();return r.createElement(v,(0,n.Z)({key:String(t)},e))}},3274:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>b,frontMatter:()=>o,metadata:()=>u,toc:()=>p});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const o={},s="web3",u={unversionedId:"interacting-with-nethermind/json-rpc-api/web3",id:"interacting-with-nethermind/json-rpc-api/web3",title:"web3",description:"web3_clientVersion",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/web3.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/web3",permalink:"/docs/interacting-with-nethermind/json-rpc-api/web3",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/web3.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/docs/interacting-with-nethermind/json-rpc-api/txpool"},next:{title:"witness",permalink:"/docs/interacting-with-nethermind/json-rpc-api/witness"}},c={},p=[{value:"web3_clientVersion",id:"web3_clientversion",level:2},{value:"web3_sha3",id:"web3_sha3",level:2}],d={toc:p},m="wrapper";function b(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"web3"},"web3"),(0,r.kt)("h2",{id:"web3_clientversion"},"web3_clientVersion"),(0,r.kt)("p",null,"Returns the current client version. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"web3_clientVersion","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"web3_clientVersion","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": Nethermind/v1.10.75-0-310037468-20210717/X64-Linux/5.0.7,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/web3#web3-clientversion"},"See also CLI web3.clientVersion")),(0,r.kt)("h2",{id:"web3_sha3"},"web3_sha3"),(0,r.kt)("p",null,"Returns Keccak of the given data. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"web3_sha3","params":[data]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"web3_sha3","params":[["0x47767638636211111a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01abc"]],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{\n "jsonrpc": "2.0",\n "result": 0xed3a98886604dcd55a159d55d35f7c14fa2f2aab7fbccbfa5511d8dadeea9442,\n "id": 1\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/web3#web3-sha3"},"See also CLI web3.sha3")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c81a798d.017bae0e.js b/assets/js/c81a798d.017bae0e.js new file mode 100644 index 000000000..a6c3aac29 --- /dev/null +++ b/assets/js/c81a798d.017bae0e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8530],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(7294);function a(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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),d=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},c="mdxType",u={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,a=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=d(n),m=a,h=c["".concat(l,".").concat(m)]||c[m]||u[m]||o;return n?r.createElement(h,i(i({ref:t},p),{},{components:n})):r.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:a,i[1]=s;for(var d=2;d<o;d++)i[d]=n[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},7190:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var r=n(7462),a=(n(7294),n(3905));const o={description:"How to run Nethermind as your ETH1 endpoint for ETH2 clients"},i="ETH2 <-> Nethermind",s={unversionedId:"resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind",id:"resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind",title:"ETH2 <-> Nethermind",description:"How to run Nethermind as your ETH1 endpoint for ETH2 clients",source:"@site/docs/07-resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind.md",sourceDirName:"07-resources/guides-and-helpers",slug:"/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind",permalink:"/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind.md",tags:[],version:"current",frontMatter:{description:"How to run Nethermind as your ETH1 endpoint for ETH2 clients"},sidebar:"tutorialSidebar",previous:{title:"ETH2 <-> Nethermind",permalink:"/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind"},next:{title:"Aura Validator",permalink:"/docs/resources/guides-and-helpers/validator-setup/aura-validator"}},l={},d=[{value:"Nethermind client as ETH1 endpoint",id:"nethermind-client-as-eth1-endpoint",level:2},{value:"Get & Run Nethermind",id:"get--run-nethermind",level:3},{value:"Monitoring Nethermind Node Health",id:"monitoring-nethermind-node-health",level:3}],p={toc:d},c="wrapper";function u(e){let{components:t,...o}=e;return(0,a.kt)(c,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"eth2---nethermind"},"ETH2 ","<","-",">"," Nethermind"),(0,a.kt)("h2",{id:"nethermind-client-as-eth1-endpoint"},"Nethermind client as ETH1 endpoint"),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"You should always consider being able to switch to Infura or another provider as a backup for safety ","(","or run two nodes\nyourself",")","\ud83d\udc48")),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"For a more comprehensive step-by-step guide, you should look into one of these awesome guides\n-",">"," ",(0,a.kt)("a",{parentName:"p",href:"https://someresat.medium.com/"},"https://someresat.medium.com/"),". Below you will find instructions on how to run\nNethermind node -",">"," ",(0,a.kt)("strong",{parentName:"p"},"Step 6 \u2014 Set up an Ethereum ","(","Eth1",")"," Node"))),(0,a.kt)("h3",{id:"get--run-nethermind"},"Get & Run Nethermind"),(0,a.kt)("ul",{className:"contains-task-list"},(0,a.kt)("li",{parentName:"ul",className:"task-list-item"},(0,a.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","Download the Nethermind client")),(0,a.kt)("p",null,"You can get it either from Github Releases or our Downloads page:"),(0,a.kt)("p",null,'{% page-ref page="../ethereum-client/download-sources/" %}'),(0,a.kt)("ul",{className:"contains-task-list"},(0,a.kt)("li",{parentName:"ul",className:"task-list-item"},(0,a.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","unzip the package"),(0,a.kt)("li",{parentName:"ul",className:"task-list-item"},(0,a.kt)("input",{parentName:"li",type:"checkbox",checked:!0,disabled:!0})," ","run the Nethermind node ","(","use ",(0,a.kt)("inlineCode",{parentName:"li"},"Nethermind.Launcher")," or change ",(0,a.kt)("inlineCode",{parentName:"li"},"configs/mainnet.cfg")," and\nrun ",(0,a.kt)("inlineCode",{parentName:"li"},"Nethermind.Runner --config mainnet"),")")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"use the Linux ",(0,a.kt)("strong",{parentName:"p"},"screen")," utility to keep your node working in the background")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-text"},"screen -S nethermind\n./Nethermind.Launcher\n")),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(7130).Z,width:"2008",height:"737"})),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"Enable ",(0,a.kt)("strong",{parentName:"p"},"JSON RPC")," service so that your ETH2 Beacon node will be able to communicate")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Setup your ",(0,a.kt)("a",{parentName:"p",href:"/docs/resources/firewall-configuration"},"firewall configuration")),(0,a.kt)("p",{parentName:"admonition"},"Configure EthStats for your node if needed:"),(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("img",{src:n(7823).Z,width:"1141",height:"275"})),(0,a.kt)("p",{parentName:"admonition"},"You should see the node starting:"),(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("img",{src:n(2962).Z,width:"1202",height:"644"}))),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Tip:")," Ctrl + A + D to leave the ",(0,a.kt)("strong",{parentName:"p"},"screen"),"\n:::"),(0,a.kt)("h3",{id:"monitoring-nethermind-node-health"},"Monitoring Nethermind Node Health"),(0,a.kt)("p",null,"Follow ",(0,a.kt)("a",{parentName:"p",href:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture"},"this guide")," to setup\nPrometheus/Grafana based local setup and monitor your node's most important stats there"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The Block Number will be ",(0,a.kt)("strong",{parentName:"p"},"0")," for the ",(0,a.kt)("strong",{parentName:"p"},"unsynced")," node")),(0,a.kt)("p",null,"To check if your node is synced you may execute ",(0,a.kt)("inlineCode",{parentName:"p"},"eth_syncing")," call check its result"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-text"},'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n')),(0,a.kt)("p",null,"If the result shows ",(0,a.kt)("inlineCode",{parentName:"p"},"false")," it means that your node is ",(0,a.kt)("strong",{parentName:"p"},"synced")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-text"},'{"jsonrpc":"2.0","result":false,"id":1}\n')))}u.isMDXComponent=!0},7130:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/image(20)-8af7ea539a4bc0f32dd5b8860b496ec8.png"},7823:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/image(3)-914d4735c8b6a9a2377e1b12418b2361.png"},2962:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/image(8)-c167de574195bd72de2680358499de50.png"}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.7b4517fe.js b/assets/js/ccc49370.7b4517fe.js new file mode 100644 index 000000000..e58461b84 --- /dev/null +++ b/assets/js/ccc49370.7b4517fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6103],{5203:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var a=n(7294),l=n(6010),r=n(1944),o=n(5281),i=n(9460),c=n(9058),s=n(390),m=n(7462),d=n(5999),u=n(2244);function g(e){const{nextItem:t,prevItem:n}=e;return a.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,d.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"})},n&&a.createElement(u.Z,(0,m.Z)({},n,{subLabel:a.createElement(d.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post"},"Newer Post")})),t&&a.createElement(u.Z,(0,m.Z)({},t,{subLabel:a.createElement(d.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post"},"Older Post"),isNext:!0})))}function f(){const{assets:e,metadata:t}=(0,i.C)(),{title:n,description:l,date:o,tags:c,authors:s,frontMatter:m}=t,{keywords:d}=m,u=e.image??m.image;return a.createElement(r.d,{title:n,description:l,keywords:d,image:u},a.createElement("meta",{property:"og:type",content:"article"}),a.createElement("meta",{property:"article:published_time",content:o}),s.some((e=>e.url))&&a.createElement("meta",{property:"article:author",content:s.map((e=>e.url)).filter(Boolean).join(",")}),c.length>0&&a.createElement("meta",{property:"article:tag",content:c.map((e=>e.label)).join(",")}))}var v=n(9407);function p(e){let{sidebar:t,children:n}=e;const{metadata:l,toc:r}=(0,i.C)(),{nextItem:o,prevItem:m,frontMatter:d}=l,{hide_table_of_contents:u,toc_min_heading_level:f,toc_max_heading_level:p}=d;return a.createElement(c.Z,{sidebar:t,toc:!u&&r.length>0?a.createElement(v.Z,{toc:r,minHeadingLevel:f,maxHeadingLevel:p}):void 0},a.createElement(s.Z,null,n),(o||m)&&a.createElement(g,{nextItem:o,prevItem:m}))}function h(e){const t=e.content;return a.createElement(i.n,{content:e.content,isBlogPostPage:!0},a.createElement(r.FG,{className:(0,l.Z)(o.k.wrapper.blogPages,o.k.page.blogPostPage)},a.createElement(f,null),a.createElement(p,{sidebar:e.sidebar},a.createElement(t,null))))}},9407:(e,t,n)=>{n.d(t,{Z:()=>m});var a=n(7462),l=n(7294),r=n(6010),o=n(3743);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},c="table-of-contents__link toc-highlight",s="table-of-contents__link--active";function m(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(i.tableOfContents,"thin-scrollbar",t)},l.createElement(o.Z,(0,a.Z)({},n,{linkClassName:c,linkActiveClassName:s})))}},3743:(e,t,n)=>{n.d(t,{Z:()=>f});var a=n(7462),l=n(7294),r=n(6668);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function i(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function s(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(c(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function m(){const e=(0,l.useRef)(0),{navbar:{hideOnScroll:t}}=(0,r.L)();return(0,l.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,l.useRef)(void 0),n=m();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:o}=e;function i(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),i=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:o}),c=s(i,{anchorTopOffset:n.current}),m=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===m)}))}return document.addEventListener("scroll",i),document.addEventListener("resize",i),i(),()=>{document.removeEventListener("scroll",i),document.removeEventListener("resize",i)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const g=l.memo(u);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:m,maxHeadingLevel:u,...f}=e;const v=(0,r.L)(),p=m??v.tableOfContents.minHeadingLevel,h=u??v.tableOfContents.maxHeadingLevel,b=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>i({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:p,maxHeadingLevel:h});return d((0,l.useMemo)((()=>{if(c&&s)return{linkClassName:c,linkActiveClassName:s,minHeadingLevel:p,maxHeadingLevel:h}}),[c,s,p,h])),l.createElement(g,(0,a.Z)({toc:b,className:n,linkClassName:c},f))}}}]); \ No newline at end of file diff --git a/assets/js/cd725121.7af5e7fe.js b/assets/js/cd725121.7af5e7fe.js new file mode 100644 index 000000000..6cbfe5e2b --- /dev/null +++ b/assets/js/cd725121.7af5e7fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9878],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>h});var o=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 i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=o.createContext({}),d=function(e){var t=o.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=d(e.components);return o.createElement(c.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),m=d(n),u=r,h=m["".concat(c,".").concat(u)]||m[u]||p[u]||i;return n?o.createElement(h,a(a({ref:t},l),{},{components:n})):o.createElement(h,a({ref:t},l))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[m]="string"==typeof e?e:r,a[1]=s;for(var d=2;d<i;d++)a[d]=n[d];return o.createElement.apply(null,a)}return o.createElement.apply(null,n)}u.displayName="MDXCreateElement"},9543:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var o=n(7462),r=(n(7294),n(3905));const i={description:"How to use System.Diagnostics.Metrics and dotnet-counters to measure and observe a Nethermind node"},a="Using dotnet-counters",s={unversionedId:"monitoring/metrics-explanation/dotnet-counters",id:"monitoring/metrics-explanation/dotnet-counters",title:"Using dotnet-counters",description:"How to use System.Diagnostics.Metrics and dotnet-counters to measure and observe a Nethermind node",source:"@site/docs/04-monitoring/metrics-explanation/dotnet-counters.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/dotnet-counters",permalink:"/docs/monitoring/metrics-explanation/dotnet-counters",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/dotnet-counters.md",tags:[],version:"current",frontMatter:{description:"How to use System.Diagnostics.Metrics and dotnet-counters to measure and observe a Nethermind node"},sidebar:"tutorialSidebar",previous:{title:"Db",permalink:"/docs/monitoring/metrics-explanation/db"},next:{title:"Evm",permalink:"/docs/monitoring/metrics-explanation/evm"}},c={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Metrics names",id:"metrics-names",level:2},{value:"dotnet-counters",id:"dotnet-counters",level:2},{value:"Same machine",id:"same-machine",level:3},{value:"Docker image and docker compose",id:"docker-image-and-docker-compose",level:3}],l={toc:d},m="wrapper";function p(e){let{components:t,...n}=e;return(0,r.kt)(m,(0,o.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"using-dotnet-counters"},"Using dotnet-counters"),(0,r.kt)("h2",{id:"introduction"},"Introduction"),(0,r.kt)("p",null,"Nethermind can be configured to publish its metrics using ",(0,r.kt)("a",{parentName:"p",href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/metrics"},"System.Diagnostics.Metrics"),". This mechanism is a native tool embedded in .NET Platform. It allows for a low overhead monitoring and reporting. Once .NET Platform metrics are enabled, they can be monitored and collected using ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet-counters")," and other tools."),(0,r.kt)("h2",{id:"configuration"},"Configuration"),(0,r.kt)("p",null,"Reporting metrics as ",(0,r.kt)("em",{parentName:"p"},"System.Diagnostics.Metrics")," is enabled by passing and additional argument ",(0,r.kt)("inlineCode",{parentName:"p"},"--Metrics.CountersEnabled true")," to the Docker containers,",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Launcher")," e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"./Nethermind.Runner --Metrics.CountersEnabled true"),"."," "),(0,r.kt)("p",null,"This flag can be configured separately from ",(0,r.kt)("a",{parentName:"p",href:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture",title:"mention"},"setting-up-local-metrics-infrastracture.md"),"as this two reporting modes are treated separately."),(0,r.kt)("h2",{id:"metrics-names"},"Metrics names"),(0,r.kt)("p",null,"Metrics reported by a Nethermind node follow the module convention. Whenever there's a module ",(0,r.kt)("inlineCode",{parentName:"p"},"X"),", its metrics will be reported under meter ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.X")," For example, ",(0,r.kt)("inlineCode",{parentName:"p"},"Evm")," module will be repoted under ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Evm")," and so on."),(0,r.kt)("h2",{id:"dotnet-counters"},"dotnet-counters"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"dotnet-counters")," is a tool provided by the .NET team to monitor and collect metrics for further analysis. The usage of it is different when used on the same machine or in the Dockerized environment. To learn more about the tool, please visit the official documentation page of ",(0,r.kt)("a",{parentName:"p",href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/metrics-collection"},"metrics collection with dotnet-counters"),"."),(0,r.kt)("h3",{id:"same-machine"},"Same machine"),(0,r.kt)("p",null,"When a node is running on the same machine, ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet-counters")," , given that the .NET runtime is already installed, can be installed with the following"," "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"dotnet tool install -g dotnet-counters\n")),(0,r.kt)("p",null,"This will install the tool globally and will allow the user to monitor and to collect metrics from any .NET process that is run on the same machine. For further information how to monitor and collect, please refer to ",(0,r.kt)("a",{parentName:"p",href:"https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters"},"the original documentation of this command"),"."),(0,r.kt)("h3",{id:"docker-image-and-docker-compose"},"Docker image and docker compose"),(0,r.kt)("p",null,"When running in a Dockerized environment, the most common way is to create a separate docker image for .NET diagnostics. This can be done with the following ",(0,r.kt)("inlineCode",{parentName:"p"},"Dockerfile")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'FROM mcr.microsoft.com/dotnet/sdk:7.0 AS base\n\nRUN dotnet tool install -g dotnet-counters; \\\n dotnet tool install -g dotnet-trace; \\\n echo \'export PATH="$PATH:/root/.dotnet/tools"\' >> /root/.bashrc\n\nENTRYPOINT ["/bin/bash"]\n')),(0,r.kt)("p",null,"Once it's built, as ",(0,r.kt)("inlineCode",{parentName:"p"},"dotdiag")," image, it will enable running ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet-counters")," from within."),(0,r.kt)("p",null,"The second part is connecting the dockerized node with the ",(0,r.kt)("inlineCode",{parentName:"p"},"dotdiag"),". Whether using ",(0,r.kt)("inlineCode",{parentName:"p"},"docker copose")," or images run manually, it's important to remember that ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet-counters")," communicate over a named pipe (Windows) or an IPC socked (Linux, macOS). To make it work, volume mapping should be provided so that the two images share the directory used for the communication. Similarly ",(0,r.kt)("inlineCode",{parentName:"p"},"pid namespace")," needs to be shared between them."," "),(0,r.kt)("p",null,"Let's visit an extract of a ",(0,r.kt)("inlineCode",{parentName:"p"},"docker-compose.yaml")," that would provide such configuration."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'version: "3.9"\n\nservices:\n\n execution:\n stop_grace_period: 30s\n container_name: execution-client\n restart: unless-stopped\n image: IMAGE_VERSION_GOES_HERE\n networks:\n - sedge\n volumes:\n - ./dotnet-tmp:/tmp # /tmp is used to create the IPC socket, expose it as ./dotnet-tmp\n ports:\n # ports omitted as they are not changed\n command:\n # make counters enabled so that reporting happens by setting the flag\n - --Metrics.CountersEnabled=true \n logging:\n driver: "json-file"\n options:\n max-size: "10m"\n max-file: "10"\n\n # the created dotdiag \n dotdiag:\n container_name: dotdiag\n image: dotdiag\n stdin_open: true # docker run -i, so that it runs\n tty: true # docker run -t, so that it runs\n volumes:\n - ./dotnet-tmp:/tmp # map to the same directory, to make IPC socket connection\n pid: "service:execution" # make pid namespaces are shared - processes are visible\n depends_on:\n - execution # make the dependency explicit\n\n')))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cd7ecfdc.09affb77.js b/assets/js/cd7ecfdc.09affb77.js new file mode 100644 index 000000000..24bfee8a1 --- /dev/null +++ b/assets/js/cd7ecfdc.09affb77.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6688],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7294);function a(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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),h=u(n),d=a,m=h["".concat(l,".").concat(d)]||h[d]||p[d]||o;return n?r.createElement(m,i(i({ref:t},c),{},{components:n})):r.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:a,i[1]=s;for(var u=2;u<o;u++)i[u]=n[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},878:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var r=n(7462),a=(n(7294),n(3905));const o={description:"Private networks of Nethermind Client"},i="Private Networks",s={unversionedId:"fundamentals/private-networks/README",id:"fundamentals/private-networks/README",title:"Private Networks",description:"Private networks of Nethermind Client",source:"@site/docs/02-fundamentals/09-private-networks/README.md",sourceDirName:"02-fundamentals/09-private-networks",slug:"/fundamentals/private-networks/",permalink:"/docs/fundamentals/private-networks/",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/09-private-networks/README.md",tags:[],version:"current",frontMatter:{description:"Private networks of Nethermind Client"},sidebar:"tutorialSidebar",previous:{title:"Resync database from scratch",permalink:"/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch"},next:{title:"How to setup a Nethermind only Clique based chain",permalink:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain"}},l={},u=[{value:"Consensus Algorithms",id:"consensus-algorithms",level:2},{value:"PoW",id:"pow",level:4},{value:"Clique",id:"clique",level:4},{value:"AuRa",id:"aura",level:4},{value:"NethDev (we also call it Spaceneth)",id:"nethdev-we-also-call-it-spaceneth",level:4},{value:"Configuration",id:"configuration",level:3}],c={toc:u},h="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(h,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"private-networks"},"Private Networks"),(0,a.kt)("p",null,"It is possible to configure a private network ","(","private blockchain",")"," using Nethermind nodes. Before you setup a private\nnetwork you will need to make a few decisions. One of them is choosing a consensus protocol that will be used for\nsecuring the network."),(0,a.kt)("h2",{id:"consensus-algorithms"},"Consensus Algorithms"),(0,a.kt)("p",null,"Nethermind supports the following consensus algorithms:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ethash ","(","PoW",")"),(0,a.kt)("li",{parentName:"ul"},"AuRa ","(","PoA",")"),(0,a.kt)("li",{parentName:"ul"},"Clique ","(","PoA",")"),(0,a.kt)("li",{parentName:"ul"},"NethDev ","(","debug / dev",")")),(0,a.kt)("h4",{id:"pow"},"PoW"),(0,a.kt)("p",null,"In the proof of work consensus algorithm some of the nodes participate in a race to mine a new block by solving a\nmathematical puzzle. The difficulty of the puzzle ","(","the amount of computation needed to find a solution",")"," is adjusted so\nas to make blocks appear with some average frequency ","(","every 15 seconds on the Ethereum mainnet",")",". PoW is currently used\nto secure the public Ethereum mainnet and the Ropsten testnet. The only mining algorithm used for PoW in Ethereum is\ncalled ethash and is designed to be strict memory hard\n","(","see ",(0,a.kt)("a",{parentName:"p",href:"http://www.hashcash.org/papers/memohash.pdf"},"Strict Memory Hard Hashing Functions"),")","."),(0,a.kt)("h4",{id:"clique"},"Clique"),(0,a.kt)("p",null,"Clique is an implementation of the Proof of Authority ","(","PoA",")"," consensus algorithm. The idea behind PoA is to choose a\ngroup of nodes within the network with authority to create ","(","seal",")"," new blocks. In Clique such nodes are called signers\nand after the initial setup signers can vote to add new signers to the group or to remove any of the existing signers.\nClique is currently supported by Geth, Parity, Nethermind and Pantheon and is used to secure the Goerli and Rinkeby\ntestnets."),(0,a.kt)("h4",{id:"aura"},"AuRa"),(0,a.kt)("p",null,"AuRa is another implementation of the Proof of Authority consensus algorithm. It is currently only supported by\nNethermind and Parity Ethereum client. Aura is used to secure the Kovan testnet and the POA Network."),(0,a.kt)("h4",{id:"nethdev-we-also-call-it-spaceneth"},"NethDev ","(","we also call it Spaceneth",")"),(0,a.kt)("p",null,"NethDev is a very simple consensus algorithm ","(","or to better describe it - lack of consensus algorithm",")",". NethDev can be\nused for setting up nodes for development and testing purposes. On the NethDev network any node can create a block with\ntransactions and as long as it is a valid Ethereum block all other nodes will accept it."),(0,a.kt)("h3",{id:"configuration"},"Configuration"),(0,a.kt)("p",null,"Nethermind uses the same format chainspec files that can be used for setting up private networks in Parity. Most of the\nelements of the chainspec files are supported by Nethermind:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"consensus engine and its parameters ","(","to choose between Ethash, Clique, AuRa or NethDev",")"),(0,a.kt)("li",{parentName:"ul"},"genesis block spec"),(0,a.kt)("li",{parentName:"ul"},"EIP transitions"),(0,a.kt)("li",{parentName:"ul"},"initial account allocations"),(0,a.kt)("li",{parentName:"ul"},"bootnodes")),(0,a.kt)("p",null,"The following elements are NOT supported at the moment:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"hardcoded sync block hashes"),(0,a.kt)("li",{parentName:"ul"},"precompile definitions and precompile activation blocks")),(0,a.kt)("p",null,"You can find below links to some of the chainspec files used to define various Ethereum networks:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/NethermindEth/nethermind/blob/9d67fc0c7b5389770521f501e2b649543ae0afa9/src/Nethermind/Chains/foundation.json"},"foundation")," -\nthe public Ethereum mainnet"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/NethermindEth/nethermind/blob/9d67fc0c7b5389770521f501e2b649543ae0afa9/src/Nethermind/Chains/goerli.json"},"goerli")," -\nthe new Clique based testnet"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/NethermindEth/nethermind/blob/9d67fc0c7b5389770521f501e2b649543ae0afa9/src/Nethermind/Chains/spaceneth.json"},"spaceneth")," -\na private network example with NethDev")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ce1c2c57.b8c1e2a2.js b/assets/js/ce1c2c57.b8c1e2a2.js new file mode 100644 index 000000000..8b1099910 --- /dev/null +++ b/assets/js/ce1c2c57.b8c1e2a2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9537],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});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 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 o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function p(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),m=l(r),u=a,f=m["".concat(c,".").concat(u)]||m[u]||d[u]||i;return r?n.createElement(f,o(o({ref:t},s),{},{components:r})):n.createElement(f,o({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=u;var p={};for(var c in t)hasOwnProperty.call(t,c)&&(p[c]=t[c]);p.originalType=e,p[m]="string"==typeof e?e:a,o[1]=p;for(var l=2;l<i;l++)o[l]=r[l];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},4741:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var n=r(7462),a=(r(7294),r(3905));const i={},o="rpc",p={unversionedId:"interacting-with-nethermind/json-rpc-api/rpc",id:"interacting-with-nethermind/json-rpc-api/rpc",title:"rpc",description:"rpc_modules",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/rpc.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/rpc",permalink:"/docs/interacting-with-nethermind/json-rpc-api/rpc",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/rpc.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/docs/interacting-with-nethermind/json-rpc-api/proof"},next:{title:"Subscribe module",permalink:"/docs/interacting-with-nethermind/json-rpc-api/subscribe"}},c={},l=[{value:"rpc_modules",id:"rpc_modules",level:2}],s={toc:l},m="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"rpc"},"rpc"),(0,a.kt)("h2",{id:"rpc_modules"},"rpc_modules"),(0,a.kt)("p",null,"Retrieves a list of modules. "),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},'{"method":"rpc_modules","params":[]}'))))),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},(0,a.kt)("inlineCode",{parentName:"td"},"Array")),(0,a.kt)("td",{parentName:"tr",align:"left"})))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of rpc_modules"',title:'"Example',request:!0,of:!0,'rpc_modules"':!0},'curl --data \'{"method":"rpc_modules","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d0812bb9.234c33df.js b/assets/js/d0812bb9.234c33df.js new file mode 100644 index 000000000..6544dff31 --- /dev/null +++ b/assets/js/d0812bb9.234c33df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8432],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function p(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),i=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),c=i(a),d=r,k=c["".concat(s,".").concat(d)]||c[d]||m[d]||l;return a?n.createElement(k,o(o({ref:t},u),{},{components:a})):n.createElement(k,o({ref:t},u))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=d;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[c]="string"==typeof e?e:r,o[1]=p;for(var i=2;i<l;i++)o[i]=a[i];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}d.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>o});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:a,className:o}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(7462),r=a(7294),l=a(6010),o=a(2466),p=a(6550),s=a(1980),i=a(7392),u=a(12);function c(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function m(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??c(a);return function(e){const t=(0,i.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function d(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function k(e){let{queryString:t=!1,groupId:a}=e;const n=(0,p.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,s._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function b(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=m(e),[o,p]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!d({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[s,i]=k({queryString:a,groupId:n}),[c,b]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,u.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),f=(()=>{const e=s??c;return d({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{f&&p(f)}),[f]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!d({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);p(e),i(e),b(e)}),[i,b,l]),tabValues:l}}var f=a(2389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){let{className:t,block:a,selectedValue:p,selectValue:s,tabValues:i}=e;const u=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.o5)(),m=e=>{const t=e.currentTarget,a=u.indexOf(t),n=i[a].value;n!==p&&(c(t),s(n))},d=e=>{let t=null;switch(e.key){case"Enter":m(e);break;case"ArrowRight":{const a=u.indexOf(e.currentTarget)+1;t=u[a]??u[0];break}case"ArrowLeft":{const a=u.indexOf(e.currentTarget)-1;t=u[a]??u[u.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},i.map((e=>{let{value:t,label:a,attributes:o}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:p===t?0:-1,"aria-selected":p===t,key:t,ref:e=>u.push(e),onKeyDown:d,onClick:m},o,{className:(0,l.Z)("tabs__item",N.tabItem,o?.className,{"tabs__item--active":p===t})}),a??t)})))}function y(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function g(e){const t=b(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",N.tabList)},r.createElement(h,(0,n.Z)({},e,t)),r.createElement(y,(0,n.Z)({},e,t)))}function v(e){const t=(0,f.Z)();return r.createElement(g,(0,n.Z)({key:String(t)},e))}},2683:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>k,frontMatter:()=>p,metadata:()=>i,toc:()=>c});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),o=a(5162);const p={},s="personal",i={unversionedId:"nethermind-utilities/cli/personal",id:"nethermind-utilities/cli/personal",title:"personal",description:"personal.importRawKey",source:"@site/docs/06-nethermind-utilities/cli/personal.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/personal",permalink:"/docs/nethermind-utilities/cli/personal",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/personal.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"parity",permalink:"/docs/nethermind-utilities/cli/parity"},next:{title:"proof",permalink:"/docs/nethermind-utilities/cli/proof"}},u={},c=[{value:"personal.importRawKey",id:"personalimportrawkey",level:2},{value:"personal.listAccounts",id:"personallistaccounts",level:2},{value:"personal.lockAccount",id:"personallockaccount",level:2},{value:"personal.newAccount",id:"personalnewaccount",level:2},{value:"personal.unlockAccount",id:"personalunlockaccount",level:2}],m={toc:c},d="wrapper";function k(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"personal"},"personal"),(0,r.kt)("h2",{id:"personalimportrawkey"},"personal.importRawKey"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"personal.importRawKey(keyData, passphrase)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"keyData"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"passphrase"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"personal.importRawKey(keyData, passphrase)\n"))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0x707fc13c0eb628c074f7ff514ae21acaee0ec072\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/personal#personal_importrawkey"},"See also JSON RPC personal_importRawKey")),(0,r.kt)("h2",{id:"personallistaccounts"},"personal.listAccounts"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"personal.listAccounts"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"personal.listAccounts\n"))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'[ "0x247b5f5f007fb5d50de13cfcbd4460db21c12bcb","0x707fc13c0eb628c074f7ff514ae21acaee0ec072" ]\n')))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/personal#personal_listaccounts"},"See also JSON RPC personal_listAccounts")),(0,r.kt)("h2",{id:"personallockaccount"},"personal.lockAccount"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"personal.lockAccount(address)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"personal.lockAccount(707Fc13C0eB628c074f7ff514Ae21ACaeE0ec072)\n"))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"true\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/personal#personal_lockaccount"},"See also JSON RPC personal_lockAccount")),(0,r.kt)("h2",{id:"personalnewaccount"},"personal.newAccount"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"personal.newAccount(passphrase)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"passphrase"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"personal.newAccount(testPass)\n"))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0xfb06d31473545b0e0d62a24e02b266e08523c6a9\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/personal#personal_newaccount"},"See also JSON RPC personal_newAccount")),(0,r.kt)("h2",{id:"personalunlockaccount"},"personal.unlockAccount"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"personal.unlockAccount(address, passphrase)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"address"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"passphrase"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"personal.unlockAccount(address, passphrase)\n"))),(0,r.kt)(o.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"true\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/personal#personal_unlockaccount"},"See also JSON RPC personal_unlockAccount")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d4a26b2c.ceafe689.js b/assets/js/d4a26b2c.ceafe689.js new file mode 100644 index 000000000..1fa45bcba --- /dev/null +++ b/assets/js/d4a26b2c.ceafe689.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4687],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=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):i(i({},t),e)),n},d=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=u(n),h=r,m=c["".concat(s,".").concat(h)]||c[h]||p[h]||l;return n?a.createElement(m,i(i({ref:t},d),{},{components:n})):a.createElement(m,i({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=h;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:r,i[1]=o;for(var u=2;u<l;u++)i[u]=n[u];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),r=n(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return a.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>N});var a=n(7462),r=n(7294),l=n(6010),i=n(2466),o=n(6550),s=n(1980),u=n(7392),d=n(12);function c(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:a,default:r}}=e;return{value:t,label:n,attributes:a,default:r}}))}function p(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??c(n);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function h(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function m(e){let{queryString:t=!1,groupId:n}=e;const a=(0,o.k6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,s._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(a.location.search);t.set(l,e),a.replace({...a.location,search:t.toString()})}),[l,a])]}function g(e){const{defaultValue:t,queryString:n=!1,groupId:a}=e,l=p(e),[i,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!h({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const a=n.find((e=>e.default))??n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:t,tabValues:l}))),[s,u]=m({queryString:n,groupId:a}),[c,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,l]=(0,d.Nk)(n);return[a,(0,r.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:a}),k=(()=>{const e=s??c;return h({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{k&&o(k)}),[k]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,l]),tabValues:l}}var k=n(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function f(e){let{className:t,block:n,selectedValue:o,selectValue:s,tabValues:u}=e;const d=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),p=e=>{const t=e.currentTarget,n=d.indexOf(t),a=u[n].value;a!==o&&(c(t),s(a))},h=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const n=d.indexOf(e.currentTarget)+1;t=d[n]??d[0];break}case"ArrowLeft":{const n=d.indexOf(e.currentTarget)-1;t=d[n]??d[d.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":n},t)},u.map((e=>{let{value:t,label:n,attributes:i}=e;return r.createElement("li",(0,a.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>d.push(e),onKeyDown:h,onClick:p},i,{className:(0,l.Z)("tabs__item",b.tabItem,i?.className,{"tabs__item--active":o===t})}),n??t)})))}function w(e){let{lazy:t,children:n,selectedValue:a}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==a}))))}function y(e){const t=g(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",b.tabList)},r.createElement(f,(0,a.Z)({},e,t)),r.createElement(w,(0,a.Z)({},e,t)))}function N(e){const t=(0,k.Z)();return r.createElement(y,(0,a.Z)({key:String(t)},e))}},1025:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>u,toc:()=>c});var a=n(7462),r=(n(7294),n(3905)),l=n(4866),i=n(5162);const o={},s="Running Nethermind & CL",u={unversionedId:"fundamentals/running-nethermind-post-merge",id:"fundamentals/running-nethermind-post-merge",title:"Running Nethermind & CL",description:"Introduction",source:"@site/docs/02-fundamentals/running-nethermind-post-merge.md",sourceDirName:"02-fundamentals",slug:"/fundamentals/running-nethermind-post-merge",permalink:"/docs/fundamentals/running-nethermind-post-merge",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/running-nethermind-post-merge.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"How to setup a Nethermind only Spaceneth based chain",permalink:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain"},next:{title:"Interacting With Nethermind",permalink:"/docs/category/interacting-with-nethermind"}},d={},c=[{value:"Introduction",id:"introduction",level:2},{value:"Step 1: Installing Nethermind",id:"step-1-installing-nethermind",level:2},{value:"Downloading Official Release",id:"downloading-official-release",level:3},{value:"Ubuntu",id:"ubuntu",level:4},{value:"macOS",id:"macos",level:4},{value:"Windows",id:"windows",level:4},{value:"Downloading Docker Image",id:"downloading-docker-image",level:3},{value:"Building From Source",id:"building-from-source",level:3},{value:"Installing Dependencies",id:"installing-dependencies",level:4},{value:"<strong>Windows</strong>",id:"windows-1",level:4},{value:"<strong>macOS</strong>",id:"macos-1",level:4},{value:"<strong>Ubuntu and Debian</strong>",id:"ubuntu-and-debian",level:4},{value:"Building Nethermind",id:"building-nethermind",level:4},{value:"Step 2: Installing Consensus Client",id:"step-2-installing-consensus-client",level:2},{value:"Clients",id:"clients",level:3},{value:"Step 3 : Configure JSON-RPC API",id:"step-3--configure-json-rpc-api",level:2},{value:"JWT Secrets",id:"jwt-secrets",level:3},{value:"Step 4: Run Consensus Client",id:"step-4-run-consensus-client",level:2},{value:"Running Nimbus",id:"running-nimbus",level:3},{value:"Running Prysm",id:"running-prysm",level:3},{value:"Running Lighthouse",id:"running-lighthouse",level:3},{value:"Running Lodestar",id:"running-lodestar",level:3},{value:"Running Teku",id:"running-teku",level:3},{value:"Step 5: Run Nethermind",id:"step-5-run-nethermind",level:2},{value:"Choosing the Network",id:"choosing-the-network",level:3},{value:"Running Local Build",id:"running-local-build",level:3},{value:"Running Release",id:"running-release",level:3},{value:"Nethermind.Launcher",id:"nethermindlauncher",level:4},{value:"Nethermind.Runner",id:"nethermindrunner",level:4},{value:"Running Docker Image",id:"running-docker-image",level:3},{value:"Docker Settings",id:"docker-settings",level:4},{value:"Nethermind Settings",id:"nethermind-settings",level:4}],p={toc:c},h="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(h,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"running-nethermind--cl"},"Running Nethermind & CL"),(0,r.kt)("h2",{id:"introduction"},"Introduction"),(0,r.kt)("p",null,"Merge"),(0,r.kt)("p",null,"Ethereum\u2019s long awaited shift from Proof of Work (POW) to Proof of Stake (POS) known as The Merge happened on September\n15, 2022 and came with fundamental changes to the network. The most notable change is the addition of the Beacon chain (\nConsensus layer) which replaced Proof of Work mining. It is coordinating and pseudorandomly selecting block producers\nfrom the pool of stakers / validators in a way that makes it extremely difficult for validators to coordinate attacks on\nthe network."),(0,r.kt)("p",null,"The Merge changed how operators run nodes on the Ethereum blockchain. A node now needs ",(0,r.kt)("strong",{parentName:"p"},"two")," clients that work\ntogether as a pair. In addition to the Execution Layer client (e.g. Nethermind) you need a Consensus Layer client that\nconnects to the Beacon chain and runs the POS algorithm."),(0,r.kt)("p",null,"This guide will show you everything you need to know to operate an Ethereum node. It will show how to connect to the\nGoerli, Sepolia and Chiado test networks as well."),(0,r.kt)("p",null,"An easy way to run both CL and EL clients is by using ",(0,r.kt)("a",{parentName:"p",href:"https://docs.sedge.nethermind.io"},"Sedge"),". Sedge is a setup tool\nfor PoS network/chain validators and\nnodes. Currently, Sedge supports multiple Linux distributions and MacOS."),(0,r.kt)("p",null,"To do your setup manually follow the steps below."),(0,r.kt)("h2",{id:"step-1-installing-nethermind"},"Step 1: Installing Nethermind"),(0,r.kt)("p",null,"You can choose from downloading the official release, downloading the docker image, or building Nethermind from source."),(0,r.kt)("h3",{id:"downloading-official-release"},"Downloading Official Release"),(0,r.kt)("h4",{id:"ubuntu"},"Ubuntu"),(0,r.kt)("p",null,"Run the following commands to enable our launchpad repository run then install Nethermind"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo add-apt-repository ppa:nethermindeth/nethermind\nsudo apt install nethermind\n")),(0,r.kt)("h4",{id:"macos"},"macOS"),(0,r.kt)("p",null,"Run the following commands to add the Nethermind repository to your local Homebrew and install"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"brew tap nethermindeth/nethermind\nbrew install nethermind\n")),(0,r.kt)("h4",{id:"windows"},"Windows"),(0,r.kt)("p",null,"On Windows all you have to do is install and unzip the packages. There are two sources that you can download from."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://downloads.nethermind.io"},"Nethermind Downloads")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/NethermindEth/nethermind/releases"},"Nethermind Github Releases"))),(0,r.kt)("h3",{id:"downloading-docker-image"},"Downloading Docker Image"),(0,r.kt)("p",null,"To download the latest Docker image run the following command to install the latest Debian biased Nethermind image."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker pull nethermind/nethermind\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Currently Nethermind only supports images for ",(0,r.kt)("strong",{parentName:"p"},"AMD64")," and ",(0,r.kt)("strong",{parentName:"p"},"ARM64")," CPU architectures.")),(0,r.kt)("h3",{id:"building-from-source"},"Building From Source"),(0,r.kt)("h4",{id:"installing-dependencies"},"Installing Dependencies"),(0,r.kt)("p",null,"To build Nethermind you will need to have ",(0,r.kt)("a",{parentName:"p",href:"https://git-scm.com/downloads"},"Git")," and\nthe ",(0,r.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/en-us/download"},".NET SDK 7.0")," installed."),(0,r.kt)("p",null,"Depending on the platform you are using you may need to install extra dependencies."),(0,r.kt)("h4",{id:"windows-1"},(0,r.kt)("strong",{parentName:"h4"},"Windows")),(0,r.kt)("p",null,"You may need to\ninstall ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170"},"Microsoft Visual C++ Redistributable")),(0,r.kt)("h4",{id:"macos-1"},(0,r.kt)("strong",{parentName:"h4"},"macOS")),(0,r.kt)("p",null,"You will need to install the following packages."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"brew install gmp snappy lz4 zstd\n")),(0,r.kt)("h4",{id:"ubuntu-and-debian"},(0,r.kt)("strong",{parentName:"h4"},"Ubuntu and Debian")),(0,r.kt)("p",null,"You will need to install the following packages"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt-get update && sudo apt-get install libsnappy-dev libc6-dev libc6\n")),(0,r.kt)("p",null,"Commands for other Linux distros can be\nfound ",(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/building-nethermind#linux"},"here"),"."),(0,r.kt)("h4",{id:"building-nethermind"},"Building Nethermind"),(0,r.kt)("p",null,"After you have installed all of the dependencies for your platform you need to clone the Nethermind repo from GitHub."),(0,r.kt)("p",null,"Once the download has finished enter the ",(0,r.kt)("inlineCode",{parentName:"p"},"nethermind/src/Nethermind")," directory and run the build command."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone --recursive https://github.com/NethermindEth/nethermind.git\ncd nethermind/src/Nethermind\ndotnet build Nethermind.sln -c Release\n")),(0,r.kt)("h2",{id:"step-2-installing-consensus-client"},"Step 2: Installing Consensus Client"),(0,r.kt)("p",null,"On the Consensus Layer you have five client implementations to choose from. Though all CL clients are great check them\nout for yourself and find the client best suited to your needs."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"We urge you to take ",(0,r.kt)("a",{parentName:"p",href:"https://clientdiversity.org"},"client diversity")," into consideration when choosing your CL client and\navoid majority clients.")),(0,r.kt)("h3",{id:"clients"},"Clients"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://prysmaticlabs.com"},"Prysm")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://consensys.net/knowledge-base/ethereum-2/teku/"},"Teku")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://lighthouse.sigmaprime.io"},"Lighthouse")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://lodestar.chainsafe.io"},"Lodestar")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://nimbus.team/#about"},"Nimbus"))),(0,r.kt)("h2",{id:"step-3--configure-json-rpc-api"},"Step 3 : Configure JSON-RPC API"),(0,r.kt)("h3",{id:"jwt-secrets"},"JWT Secrets"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://jwt.io"},"JSON Web Token")," authentication was added to the JSON-RPC API for security reasons to ensure that\nnothing interferes with\nthe communication between the Execution Client (Nethermind in this case) and the Consensus Client. This requires you to\ncreate a file containing a hexadecimal \u201csecret\u201d that will be passed to each ."),(0,r.kt)("p",null,"To create this \u201cSecret File\u201d use the following command."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'openssl rand -hex 32 | tr -d "\\n" > "/tmp/jwtsecret"\n')),(0,r.kt)("p",null,"Install ",(0,r.kt)("a",{parentName:"p",href:"https://wiki.openssl.org/index.php/Binaries"},"OpenSSL for Windows")," then simply type on your Terminal or Command\nPrompt (make sure you add the binaries directory to your environment variables or run the terminal from there)\nwhere ",(0,r.kt)("inlineCode",{parentName:"p"},'"/tmp/jwtsecret"')," will be the file path and name when created."),(0,r.kt)("p",null,"If you do not want to install OpenSSL, you may use a random hex generator website. All you need is a 64 character hex\nstring saved to a ",(0,r.kt)("inlineCode",{parentName:"p"},".txt")," file. Example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"fcba4ab3138530cf233568bee2d518dd960da77355333d5ac856e1f27487dc9c\n")),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"We strongly recommend you to use OpenSSL to generate the secret locally because of security reasons")),(0,r.kt)("h2",{id:"step-4-run-consensus-client"},"Step 4: Run Consensus Client"),(0,r.kt)("p",null,"Ensure you have:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Installed Nethermind"),(0,r.kt)("li",{parentName:"ol"},"Installed Consensus client"),(0,r.kt)("li",{parentName:"ol"},"Created a JWT secret file"),(0,r.kt)("li",{parentName:"ol"},"Engine module is enabled with authenticated port - it is a default setting")),(0,r.kt)("p",null,"Then you are ready to start your clients. First start up Consensus Layer."),(0,r.kt)("p",null,"See section below for commands to run the CL client you installed. You will need to make sure the ",(0,r.kt)("inlineCode",{parentName:"p"},"--jwt-secret")," has the\ncorrect path as well or the clients will not be able to communicate."),(0,r.kt)("p",null,"Once both clients are running watch the logs to make sure you don't get any ",(0,r.kt)("inlineCode",{parentName:"p"},"Unauthorized")," errors to ensure the clients\nare communicating."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"Checkpoint Sync")),(0,r.kt)("p",{parentName:"admonition"},"It would be way faster to sync consensus clients using checkpoint sync."),(0,r.kt)("p",{parentName:"admonition"},"To sync the CL client using a checkpoint sync, view the community maintained endpoints\n",(0,r.kt)("a",{parentName:"p",href:"https://eth-clients.github.io/checkpoint-sync-endpoints/"},"here")),(0,r.kt)("p",{parentName:"admonition"},"For Goerli or Sepolia see ",(0,r.kt)("a",{parentName:"p",href:"https://notes.ethereum.org/@launchpad/checkpoint-sync"},"here"),".")),(0,r.kt)("h3",{id:"running-nimbus"},"Running Nimbus"),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"mainnet",label:"Mainnet",default:!0,mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"nimbus-eth2/build/nimbus_beacon_node \\\n--network=mainnet \\\n--web3-url=http://127.0.0.1:8551 \\\n--rest \\\n--metrics-explanation \\\n--suggested-fee-recipient='Enter-eth-address-here' \\\n--jwt-secret=\"/tmp/jwtsecret\"\n")),(0,r.kt)("p",null,"For checkpoint sync, add the following flag with a checkpoint sync endpoint\nExample:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"--trusted-node-url=https://beaconstate.ethstaker.cc\n"))),(0,r.kt)(i.Z,{value:"goerli",label:"Goerli",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"nimbus-eth2/build/nimbus_beacon_node \\\n--network=goerli \\\n--web3-url=http://127.0.0.1:8551 \\\n--rest \\\n--metrics-explanation \\\n--suggested-fee-recipient='Enter-eth-address-here' \\\n--jwt-secret=\"/tmp/jwtsecret\"\n"))),(0,r.kt)(i.Z,{value:"sepolia",label:"Sepolia",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"nimbus-eth2/build/nimbus_beacon_node \\\n--network=sepolia \\\n--web3-url=http://127.0.0.1:8551 \\\n--rest \\\n--metrics \\\n--suggested-fee-recipient='Enter-eth-address-here' \\\n--jwt-secret=\"/tmp/jwtsecret\"\n")))),(0,r.kt)("h3",{id:"running-prysm"},"Running Prysm"),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"mainnet",label:"Mainnet",default:!0,mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'cd prysm\n./prysm.sh beacon-chain \\\n--mainnet \\\n--datadir "$db_path" \\\n--suggested-fee-recipient=\'Enter-eth-address-here\' \\\n--execution-endpoint=http://localhost:8551 \\\n--jwt-secret="/tmp/jwtsecret"\n')),(0,r.kt)("p",null,"For checkpoint sync, add the following flag with a checkpoint sync endpoint\nExample"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'--checkpoint-sync-url="https://beaconstate.ethstaker.cc"\n--genesis-beacon-api-url="https://beaconstate.ethstaker.cc"\n'))),(0,r.kt)(i.Z,{value:"goerli",label:"Goerli",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cd prysm\n./prysm.sh beacon-chain \\\n--goerli \\\n--datadir $db_path \\\n--suggested-fee-recipient='Enter-eth-address-here' \\\n--execution-endpoint=http://localhost:8551 \\\n--jwt-secret=/tmp/jwtsecret\n"))),(0,r.kt)(i.Z,{value:"sepolia",label:"Sepolia",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cd prysm\n./prysm.sh beacon-chain \\\n--sepolia \\\n--datadir $db_path \\\n--suggested-fee-recipient='Enter-eth-address-here' \\\n--execution-endpoint=http://localhost:8551 \\\n--jwt-secret=/tmp/jwtsecret\n"))),(0,r.kt)(i.Z,{value:"chiado",label:"Chiado",mdxType:"TabItem"},(0,r.kt)("p",null,"Please follow guide provided ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/gnosischain/prysm-client"},"here"),"."))),(0,r.kt)("h3",{id:"running-lighthouse"},"Running Lighthouse"),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"mainnet",label:"Mainnet",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"lighthouse \\\nbeacon_node \\\n--network mainnet \\\n--debug-level info \\\n--datadir ./mainnet-lh1 \\\n--eth1 \\\n--http \\\n--http-allow-sync-stalled \\\n--metrics-explanation \\\n--execution-endpoints http://127.0.0.1:8551 \\\n--enr-udp-port=9000 \\\n--enr-tcp-port=9000 \\\n--discovery-port=9000 \\\n--suggested-fee-recipient=\n'Enter-eth-address-here' \\\n--jwt-secrets=\"/tmp/jwtsecret\"\n")),(0,r.kt)("p",null,"For checkpoint sync, add the following flag with a checkpoint sync endpoint\nExample:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'--checkpoint-sync-url "https://beaconstate.ethstaker.cc"\n'))),(0,r.kt)(i.Z,{value:"goerli",label:"Goerli",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"lighthouse \\\nbeacon_node \\\n--network goerli \\\n--debug-level info \\\n--datadir ./testnet-lh1 \\\n--eth1 \\\n--http \\\n--http-allow-sync-stalled \\\n--metrics-explanation \\\n--execution-endpoints http://127.0.0.1:8551 \\\n--enr-udp-port=9000 \\\n--enr-tcp-port=9000 \\\n--discovery-port=9000 \\\n--suggested-fee-recipient=\n'Enter-eth-address-here' \\\n--jwt-secrets=\"/tmp/jwtsecret\"\n"))),(0,r.kt)(i.Z,{value:"sepolia",label:"Sepolia",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"lighthouse \\\nbeacon_node \\\n--network sepolia \\\n--debug-level info \\\n--datadir ./testnet-lh1 \\\n--eth1 \\\n--http \\\n--http-allow-sync-stalled \\\n--metrics \\\n--execution-endpoints http://127.0.0.1:8551 \\\n--enr-udp-port=9000 \\\n--enr-tcp-port=9000 \\\n--discovery-port=9000 \\\n--suggested-fee-recipient=\n'Enter-eth-address-here' \\\n--jwt-secrets=\"/tmp/jwtsecret\"\n"))),(0,r.kt)(i.Z,{value:"chiado",label:"Chiado",mdxType:"TabItem"},(0,r.kt)("p",null,"Please follow guide provided ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/gnosischain/lighthouse-client"},"here"),"."))),(0,r.kt)("h3",{id:"running-lodestar"},"Running Lodestar"),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"mainnet",label:"Mainnet",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'cd lodestar\n./lodestar beacon \\\n--dataDir "../lodestar-beacondata" \\\n--network mainnet \\\n--eth1 \\\n--execution.urls "http://127.0.0.1:8551" \\\n--discv5 \\\n--suggestedFeeRecipient \'Enter-eth-address-here\' \\\n--jwt-secret "/tmp/jwtsecret"\n\n')),(0,r.kt)("p",null,"For checkpoint sync, add the following flag with a checkpoint sync endpoint\nExample:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'--checkpointSyncUrl "https://beaconstate.ethstaker.cc"\n'))),(0,r.kt)(i.Z,{value:"goerli",label:"Goerli",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'cd lodestar\n./lodestar beacon \\\n--dataDir "../lodestar-beacondata" \\\n--network goerli \\\n--eth1 \\\n--execution.urls "http://127.0.0.1:8551" \\\n--discv5 \\\n--suggestedFeeRecipient \'Enter-eth-address-here\' \\\n--jwt-secret "/tmp/jwtsecret"\n'))),(0,r.kt)(i.Z,{value:"sepolia",label:"Sepolia",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'cd lodestar\n./lodestar beacon \\\n--dataDir "../lodestar-beacondata" \\\n--network sepolia \\\n--eth1 \\\n--execution.urls "http://127.0.0.1:8551" \\\n--discv5 \\\n--suggestedFeeRecipient \'Enter-eth-address-here\' \\\n--jwt-secret "/tmp/jwtsecret"\n'))),(0,r.kt)(i.Z,{value:"chiado",label:"Chiado",mdxType:"TabItem"},(0,r.kt)("p",null,"Please follow guide provided ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/gnosischain/lodestar-client"},"here"),"."))),(0,r.kt)("h3",{id:"running-teku"},"Running Teku"),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"mainnet",label:"Mainnet",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'./teku/build/install/teku/bin/teku \\\n--data-path "datadir-teku" \\\n--network mainnet \\\n--ee-endpoint http://localhost:8551 \\\n--ee-jwt-secret-file "/tmp/jwtsecret" \\\n--log-destination console \\\n')),(0,r.kt)("p",null,"For checkpoint sync, add the following flag with a checkpoint sync endpoint\nExample:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'--initial-state="https://beaconstate.ethstaker.cc"\n'))),(0,r.kt)(i.Z,{value:"goerli",label:"Goerli",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'./teku/build/install/teku/bin/teku \\\n--data-path "datadir-teku" \\\n--network goerli \\\n--ee-endpoint http://localhost:8551 \\\n--ee-jwt-secret-file "/tmp/jwtsecret" \\\n--log-destination console \\\n--validators-proposer-default-fee-recipient=\'Enter-eth-address-here\'\n'))),(0,r.kt)(i.Z,{value:"sepolia",label:"Sepolia",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'./teku/build/install/teku/bin/teku \\\n--data-path "datadir-teku" \\\n--network sepolia \\\n--ee-endpoint http://localhost:8551 \\\n--ee-jwt-secret-file "/tmp/jwtsecret" \\\n--log-destination console \\\n--validators-proposer-default-fee-recipient=\'Enter-eth-address-here\'\n'))),(0,r.kt)(i.Z,{value:"chiado",label:"Chiado",mdxType:"TabItem"},(0,r.kt)("p",null,"Please follow guide provided ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/gnosischain/teku-client"},"here"),"."))),(0,r.kt)("h2",{id:"step-5-run-nethermind"},"Step 5: Run Nethermind"),(0,r.kt)("p",null,"Once Consensus Layer has started you can start Nethermind client."," "),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Since the Ethereum merge, you are required to set the Merge.Enabled=true flag. This is not required if you are\nusing\nthe\ndefault config files as this is enabled by default.")),(0,r.kt)("h3",{id:"choosing-the-network"},"Choosing the Network"),(0,r.kt)("p",null,"Depending on the network you want to run the node for, choose the ",(0,r.kt)("inlineCode",{parentName:"p"},"--config")," variable. For more about networks,\ncheck ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/networks"},"here"),"."),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"--config")," is the config file for the network you want to connect to. For example, to run a node for the goerli\ntestnet use ",(0,r.kt)("inlineCode",{parentName:"p"},"--config goerli"),"."),(0,r.kt)("h3",{id:"running-local-build"},"Running Local Build"),(0,r.kt)("p",null,"After you have built Nethermind you should be in the ",(0,r.kt)("inlineCode",{parentName:"p"},"nethermind/src/Nethermind")," directory. From there you will need to\nrun the following commands."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cd Nethermind.Runner\ndotnet run -c Release --config mainnet --JsonRpc.JwtSecretFile=PATH\n")),(0,r.kt)("p",null,"Where PATH is the path to your JWT secret. ex ",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.JwtSecretFile=/tmp/jwtsecret")),(0,r.kt)("h3",{id:"running-release"},"Running Release"),(0,r.kt)("p",null,"You have two options when running from a release. The ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Launcher")," which is a simple GUI with options\nto\nconfigure your node, or the ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner")," where you can configure your node by hand."),(0,r.kt)("p",null,"You will need to be in the directory that the ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Nethermind.Launcher")," are in to run\nNethermind."),(0,r.kt)("h4",{id:"nethermindlauncher"},"Nethermind.Launcher"),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"windows",label:"Windows",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Launcher\n"))),(0,r.kt)(i.Z,{value:"ubuntu",label:"Ubuntu",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"nethermind\n\n"))),(0,r.kt)(i.Z,{value:"macOS",label:"macOS",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"nethermind-launcher\n")))),(0,r.kt)("h4",{id:"nethermindrunner"},"Nethermind.Runner"),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{value:"windows",label:"Windows",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Runner --config goerli --JsonRpc.JwtSecretFile=PATH \n"))),(0,r.kt)(i.Z,{value:"ubuntu",label:"Ubuntu",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"nethermind --config goerli --JsonRpc.JwtSecretFile=PATH \n"))),(0,r.kt)(i.Z,{value:"macOS",label:"macOS",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"nethermind --config goerli --JsonRpc.JwtSecretFile=PATH \n")))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"--config")," flag is the network. for example it can be mainnet, goerli or sepolia.")),(0,r.kt)("p",null,"Where PATH is the path to your JWT secret. ex ",(0,r.kt)("inlineCode",{parentName:"p"},"--JsonRpc.JwtSecretFile=/tmp/jwtsecret")),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"If you are not using the default config files, make sure you also use the ",(0,r.kt)("strong",{parentName:"p"},"Merge.Enabled=true")," flag when launching the\nclient.")),(0,r.kt)("h3",{id:"running-docker-image"},"Running Docker Image"),(0,r.kt)("p",null,"Running Nethermind from a Docker image may require more configuration. The commands below should work in most\nsituations"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it -v /home/user/data:/nethermind/data nethermind/nethermind --config goerli --JsonRpc.Enabled true\n--JsonRpc.JwtSecretFile=PATH --datadir data\n")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("inlineCode",{parentName:"p"},"--config")," flag is the network. For example it can be mainnet, goerli or sepolia. ",(0,r.kt)("strong",{parentName:"p"},"If you are not using the\nconfig file, make sure you set Merge.Enabled=true as flag."))),(0,r.kt)("h4",{id:"docker-settings"},"Docker Settings"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-v /home/user/data:/nethermind/data")," sets local directory we will be storing our data to")),(0,r.kt)("p",null,"On some OS like Amazon Linux you may need to increase the ",(0,r.kt)("inlineCode",{parentName:"p"},"nofile")," limit by adding the following instruction to\ndocker\ncommand ",(0,r.kt)("inlineCode",{parentName:"p"},"-ulimit nofile=1000000:1000000")," or you can take a look\nan ",(0,r.kt)("a",{parentName:"p",href:"https://stackoverflow.com/questions/62127643/need-understand-ulimits-nofile-setting-in-host-and-container/62136351#62136351"},"alternative\nsolution"),"."),(0,r.kt)("h4",{id:"nethermind-settings"},"Nethermind Settings"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--JsonRpc.JwtSecretFile=PATH")," where PATH is the location of your JWT secret ex. ",(0,r.kt)("inlineCode",{parentName:"li"},"/tmp/jwtsecret")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--datadir data")," maps the database, keystore, and logs all at once")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d8a27932.140f7c74.js b/assets/js/d8a27932.140f7c74.js new file mode 100644 index 000000000..1f73051d1 --- /dev/null +++ b/assets/js/d8a27932.140f7c74.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8854],{3905:(t,e,r)=>{r.d(e,{Zo:()=>p,kt:()=>d});var n=r(7294);function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function l(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?o(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function i(t,e){if(null==t)return{};var r,n,a=function(t,e){if(null==t)return{};var r,n,a={},o=Object.keys(t);for(n=0;n<o.length;n++)r=o[n],e.indexOf(r)>=0||(a[r]=t[r]);return a}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)r=o[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}var c=n.createContext({}),s=function(t){var e=n.useContext(c),r=e;return t&&(r="function"==typeof t?t(e):l(l({},e),t)),r},p=function(t){var e=s(t.components);return n.createElement(c.Provider,{value:e},t.children)},f="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},u=n.forwardRef((function(t,e){var r=t.components,a=t.mdxType,o=t.originalType,c=t.parentName,p=i(t,["components","mdxType","originalType","parentName"]),f=s(r),u=a,d=f["".concat(c,".").concat(u)]||f[u]||m[u]||o;return r?n.createElement(d,l(l({ref:e},p),{},{components:r})):n.createElement(d,l({ref:e},p))}));function d(t,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var o=r.length,l=new Array(o);l[0]=u;var i={};for(var c in e)hasOwnProperty.call(e,c)&&(i[c]=e[c]);i.originalType=t,i[f]="string"==typeof t?t:a,l[1]=i;for(var s=2;s<o;s++)l[s]=r[s];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},8825:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));const o={},l="Blocks",i={unversionedId:"fundamentals/configuration/blocks",id:"fundamentals/configuration/blocks",title:"Blocks",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/blocks.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/blocks",permalink:"/docs/fundamentals/configuration/blocks",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/blocks.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"AuRaMerge",permalink:"/docs/fundamentals/configuration/auramerge"},next:{title:"Bloom",permalink:"/docs/fundamentals/configuration/bloom"}},c={},s=[],p={toc:s},f="wrapper";function m(t){let{components:e,...r}=t;return(0,a.kt)(f,(0,n.Z)({},p,r,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"blocks"},"Blocks"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"ExtraData"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_BLOCKSCONFIG_EXTRADATA"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Block header extra data. 32-bytes shall be extra data max length."),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nethermind")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"MinGasPrice"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_BLOCKSCONFIG_MINGASPRICE"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Minimum gas premium for transactions accepted by the block producer. Before EIP1559: Minimum gas price for transactions accepted by the block producer."),(0,a.kt)("td",{parentName:"tr",align:"left"},"1")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"RandomizedBlocks"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Only used in NethDev. Setting this to true will change the difficulty of the block randomly within the constraints."),(0,a.kt)("td",{parentName:"tr",align:"left"},"false")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"TargetBlockGasLimit"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Block gas limit that the block producer should try to reach in the fastest possible way based on protocol rules. NULL value means that the miner should follow other miners."),(0,a.kt)("td",{parentName:"tr",align:"left"},"null")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d95744ba.a1d4c6bf.js b/assets/js/d95744ba.a1d4c6bf.js new file mode 100644 index 000000000..ff4c73f2f --- /dev/null +++ b/assets/js/d95744ba.a1d4c6bf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2198],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>k});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function p(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),s=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},d=function(t){var e=s(t.components);return n.createElement(o.Provider,{value:e},t.children)},m="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,o=t.parentName,d=p(t,["components","mdxType","originalType","parentName"]),m=s(a),c=r,k=m["".concat(o,".").concat(c)]||m[c]||u[c]||l;return a?n.createElement(k,i(i({ref:e},d),{},{components:a})):n.createElement(k,i({ref:e},d))}));function k(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=c;var p={};for(var o in e)hasOwnProperty.call(e,o)&&(p[o]=e[o]);p.originalType=t,p[m]="string"==typeof t?t:r,i[1]=p;for(var s=2;s<l;s++)i[s]=a[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}c.displayName="MDXCreateElement"},5162:(t,e,a)=>{a.d(e,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(t){let{children:e,hidden:a,className:i}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},e)}},4866:(t,e,a)=>{a.d(e,{Z:()=>q});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),p=a(6550),o=a(1980),s=a(7392),d=a(12);function m(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function u(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??m(a);return function(t){const e=(0,s.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(t),t}),[e,a])}function c(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function k(t){let{queryString:e=!1,groupId:a}=t;const n=(0,p.k6)(),l=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,o._X)(l),(0,r.useCallback)((t=>{if(!l)return;const e=new URLSearchParams(n.location.search);e.set(l,t),n.replace({...n.location,search:e.toString()})}),[l,n])]}function h(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,l=u(t),[i,p]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!c({value:e,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:l}))),[o,s]=k({queryString:a,groupId:n}),[m,h]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,l]=(0,d.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&l.set(t)}),[a,l])]}({groupId:n}),g=(()=>{const t=o??m;return c({value:t,tabValues:l})?t:null})();(0,r.useLayoutEffect)((()=>{g&&p(g)}),[g]);return{selectedValue:i,selectValue:(0,r.useCallback)((t=>{if(!c({value:t,tabValues:l}))throw new Error(`Can't select invalid tab value=${t}`);p(t),s(t),h(t)}),[s,h,l]),tabValues:l}}var g=a(2389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(t){let{className:e,block:a,selectedValue:p,selectValue:o,tabValues:s}=t;const d=[],{blockElementScrollPositionUntilNextRender:m}=(0,i.o5)(),u=t=>{const e=t.currentTarget,a=d.indexOf(e),n=s[a].value;n!==p&&(m(e),o(n))},c=t=>{let e=null;switch(t.key){case"Enter":u(t);break;case"ArrowRight":{const a=d.indexOf(t.currentTarget)+1;e=d[a]??d[0];break}case"ArrowLeft":{const a=d.indexOf(t.currentTarget)-1;e=d[a]??d[d.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},e)},s.map((t=>{let{value:e,label:a,attributes:i}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:p===e?0:-1,"aria-selected":p===e,key:e,ref:t=>d.push(t),onKeyDown:c,onClick:u},i,{className:(0,l.Z)("tabs__item",N.tabItem,i?.className,{"tabs__item--active":p===e})}),a??e)})))}function f(t){let{lazy:e,children:a,selectedValue:n}=t;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=l.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function y(t){const e=h(t);return r.createElement("div",{className:(0,l.Z)("tabs-container",N.tabList)},r.createElement(b,(0,n.Z)({},t,e)),r.createElement(f,(0,n.Z)({},t,e)))}function q(t){const e=(0,g.Z)();return r.createElement(y,(0,n.Z)({key:String(e)},t))}},1385:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>o,default:()=>k,frontMatter:()=>p,metadata:()=>s,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const p={},o="clique",s={unversionedId:"interacting-with-nethermind/json-rpc-api/clique",id:"interacting-with-nethermind/json-rpc-api/clique",title:"clique",description:"clique_discard",source:"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/clique.md",sourceDirName:"03-interacting-with-nethermind/02-json-rpc-api",slug:"/interacting-with-nethermind/json-rpc-api/clique",permalink:"/docs/interacting-with-nethermind/json-rpc-api/clique",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/03-interacting-with-nethermind/02-json-rpc-api/clique.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"admin",permalink:"/docs/interacting-with-nethermind/json-rpc-api/admin"},next:{title:"debug",permalink:"/docs/interacting-with-nethermind/json-rpc-api/debug"}},d={},m=[{value:"clique_discard",id:"clique_discard",level:2},{value:"clique_getBlockSigner",id:"clique_getblocksigner",level:2},{value:"clique_getSigners",id:"clique_getsigners",level:2},{value:"clique_getSignersAnnotated",id:"clique_getsignersannotated",level:2},{value:"clique_getSignersAtHash",id:"clique_getsignersathash",level:2},{value:"clique_getSignersAtHashAnnotated",id:"clique_getsignersathashannotated",level:2},{value:"clique_getSignersAtNumber",id:"clique_getsignersatnumber",level:2},{value:"clique_getSnapshot",id:"clique_getsnapshot",level:2},{value:"clique_getSnapshotAtHash",id:"clique_getsnapshotathash",level:2},{value:"clique_produceBlock",id:"clique_produceblock",level:2},{value:"clique_propose",id:"clique_propose",level:2}],u={toc:m},c="wrapper";function k(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"clique"},"clique"),(0,r.kt)("h2",{id:"clique_discard"},"clique_discard"),(0,r.kt)("p",null,"This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_discard","params":[signer]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"signer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of clique_discard"',title:'"Example',request:!0,of:!0,'clique_discard"':!0},'curl --data \'{"method":"clique_discard","params":[signer],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-discard"},"See also CLI clique.discard")),(0,r.kt)("h2",{id:"clique_getblocksigner"},"clique_getBlockSigner"),(0,r.kt)("p",null,"Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_getBlockSigner","params":[hash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of clique_getBlockSigner"',title:'"Example',request:!0,of:!0,'clique_getBlockSigner"':!0},'curl --data \'{"method":"clique_getBlockSigner","params":[hash],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-getblocksigner"},"See also CLI clique.getBlockSigner")),(0,r.kt)("h2",{id:"clique_getsigners"},"clique_getSigners"),(0,r.kt)("p",null,"Retrieves the list of authorized signers. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_getSigners","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of clique_getSigners"',title:'"Example',request:!0,of:!0,'clique_getSigners"':!0},'curl --data \'{"method":"clique_getSigners","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-getsigners"},"See also CLI clique.getSigners")),(0,r.kt)("h2",{id:"clique_getsignersannotated"},"clique_getSignersAnnotated"),(0,r.kt)("p",null,"Retrieves the list of authorized signers but with signer names instead of addresses "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_getSignersAnnotated","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("p",null,'{% tab title="Example request of clique_getSignersAnnotated" %}'),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'curl --data \'{"method":"clique_getSignersAnnotated","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-getsignersannotated"},"See also CLI clique.getSignersAnnotated")),(0,r.kt)("h2",{id:"clique_getsignersathash"},"clique_getSignersAtHash"),(0,r.kt)("p",null,"Retrieves the list of authorized signers at the specified block by hash. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_getSignersAtHash","params":[hash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of clique_getSignersAtHash"',title:'"Example',request:!0,of:!0,'clique_getSignersAtHash"':!0},'curl --data \'{"method":"clique_getSignersAtHash","params":[hash],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-getsignersathash"},"See also CLI clique.getSignersAtHash")),(0,r.kt)("h2",{id:"clique_getsignersathashannotated"},"clique_getSignersAtHashAnnotated"),(0,r.kt)("p",null,"Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_getSignersAtHashAnnotated","params":[hash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of clique_getSignersAtHashAnnotated"',title:'"Example',request:!0,of:!0,'clique_getSignersAtHashAnnotated"':!0},'curl --data \'{"method":"clique_getSignersAtHashAnnotated","params":[hash],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-getsignersathashannotated"},"See also CLI clique.getSignersAtHashAnnotated")),(0,r.kt)("h2",{id:"clique_getsignersatnumber"},"clique_getSignersAtNumber"),(0,r.kt)("p",null,"Retrieves the list of authorized signers at the specified block by block number. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_getSignersAtNumber","params":[number]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of clique_getSignersAtNumber"',title:'"Example',request:!0,of:!0,'clique_getSignersAtNumber"':!0},'curl --data \'{"method":"clique_getSignersAtNumber","params":[number],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-getsignersatnumber"},"See also CLI clique.getSignersAtNumber")),(0,r.kt)("h2",{id:"clique_getsnapshot"},"clique_getSnapshot"),(0,r.kt)("p",null,"Retrieves a snapshot of all clique state at a given block. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_getSnapshot","params":[]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Snapshot object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"clique_getSnapshot","params":[],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Snapshot")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signers"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SignerLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-getsnapshot"},"See also CLI clique.getSnapshot")),(0,r.kt)("h2",{id:"clique_getsnapshotathash"},"clique_getSnapshotAtHash"),(0,r.kt)("p",null,"Retrieves the state snapshot at a given block. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_getSnapshotAtHash","params":[hash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Snapshot object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'curl --data \'{"method":"clique_getSnapshotAtHash","params":[hash],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n'))),(0,r.kt)(i.Z,{label:"Objects",value:"objects",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Snapshot")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Number"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Signers"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"SignerLimit"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-getsnapshotathash"},"See also CLI clique.getSnapshotAtHash")),(0,r.kt)("h2",{id:"clique_produceblock"},"clique_produceBlock"),(0,r.kt)("p",null,"Forces Clique block producer to produce a new block "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_produceBlock","params":[parentHash]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"parentHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of clique_produceBlock"',title:'"Example',request:!0,of:!0,'clique_produceBlock"':!0},'curl --data \'{"method":"clique_produceBlock","params":[parentHash],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-produceblock"},"See also CLI clique.produceBlock")),(0,r.kt)("h2",{id:"clique_propose"},"clique_propose"),(0,r.kt)("p",null,"Adds a new authorization proposal that the signer will attempt to push through. If the ",(0,r.kt)("inlineCode",{parentName:"p"},"vote")," parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With ",(0,r.kt)("inlineCode",{parentName:"p"},"vote")," set to false, the signer is against the address. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},'{"method":"clique_propose","params":[signer, vote]}'))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"signer"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Address")),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"vote"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Boolean")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="Example request of clique_propose"',title:'"Example',request:!0,of:!0,'clique_propose"':!0},'curl --data \'{"method":"clique_propose","params":[signer, vote],"id":1,"jsonrpc":"2.0"}\' -H "Content-Type: application/json" -X POST localhost:8545\n')),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/nethermind-utilities/cli/clique#clique-propose"},"See also CLI clique.propose")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d999088d.0121be19.js b/assets/js/d999088d.0121be19.js new file mode 100644 index 000000000..012974a9e --- /dev/null +++ b/assets/js/d999088d.0121be19.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8030],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var m=r.createContext({}),d=function(e){var t=r.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=d(e.components);return r.createElement(m.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,m=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=d(n),s=a,h=c["".concat(m,".").concat(s)]||c[s]||p[s]||i;return n?r.createElement(h,l(l({ref:t},u),{},{components:n})):r.createElement(h,l({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=s;var o={};for(var m in t)hasOwnProperty.call(t,m)&&(o[m]=t[m]);o.originalType=e,o[c]="string"==typeof e?e:a,l[1]=o;for(var d=2;d<i;d++)l[d]=n[d];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}s.displayName="MDXCreateElement"},7334:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>m,contentTitle:()=>l,default:()=>p,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var r=n(7462),a=(n(7294),n(3905));const i={sidebar_label:"Contact Us"},l="Contact us",o={unversionedId:"contact/README",id:"contact/README",title:"Contact us",description:"E-mails",source:"@site/docs/08-contact/README.md",sourceDirName:"08-contact",slug:"/contact/",permalink:"/docs/contact/",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/08-contact/README.md",tags:[],version:"current",frontMatter:{sidebar_label:"Contact Us"},sidebar:"tutorialSidebar",previous:{title:"Contact Us",permalink:"/docs/category/contact-us"},next:{title:"Welcome to Nethermind",permalink:"/docs/"}},m={},d=[{value:"E-mails",id:"e-mails",level:2},{value:"Social Media and Other Platforms",id:"social-media-and-other-platforms",level:2},{value:"Nethermind Website",id:"nethermind-website",level:3},{value:"Discord",id:"discord",level:3},{value:"GitHub",id:"github",level:3},{value:"Twitter",id:"twitter",level:3},{value:"Gitter",id:"gitter",level:3},{value:"Medium",id:"medium",level:3},{value:"Linkedin",id:"linkedin",level:3}],u={toc:d},c="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"contact-us"},"Contact us"),(0,a.kt)("h2",{id:"e-mails"},"E-mails"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"Team"),(0,a.kt)("th",{parentName:"tr",align:null},"E-mail address"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"All"),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("a",{parentName:"td",href:"mailto:hello@nethermind.io"},"hello@nethermind.io"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Nethermind Team"),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("a",{parentName:"td",href:"mailto:team@nethermind.io"},"team@nethermind.io"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"DevOps"),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("a",{parentName:"td",href:"mailto:devops@nethermind.io"},"devops@nethermind.io"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Hiring"),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("a",{parentName:"td",href:"mailto:talent@nethermind.io"},"talent@nethermind.io"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Marketing & PR"),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("a",{parentName:"td",href:"mailto:marketing@nethermind.io"},"marketing@nethermind.io"))))),(0,a.kt)("h2",{id:"social-media-and-other-platforms"},"Social Media and Other Platforms"),(0,a.kt)("h3",{id:"nethermind-website"},"Nethermind Website"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://nethermind.io/"},"Nethermind Website"))),(0,a.kt)("h3",{id:"discord"},"Discord"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://discord.gg/DedCdvDaNm"},"Join us on Discord"))),(0,a.kt)("h3",{id:"github"},"GitHub"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/NethermindEth/nethermind/issues"},"View our GitHub Issues"))),(0,a.kt)("h3",{id:"twitter"},"Twitter"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://twitter.com/nethermindeth"},"Follow us on Twitter"))),(0,a.kt)("h3",{id:"gitter"},"Gitter"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://gitter.im/nethermindeth/nethermind"},"Join the discussion on Gitter"))),(0,a.kt)("h3",{id:"medium"},"Medium"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://medium.com/nethermind-eth"},"Read our posts on Medium"))),(0,a.kt)("h3",{id:"linkedin"},"Linkedin"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://www.linkedin.com/company/nethermind"},"Connect with us on LinkedIn"))))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d9f32620.e105d1ca.js b/assets/js/d9f32620.e105d1ca.js new file mode 100644 index 000000000..c26b689a8 --- /dev/null +++ b/assets/js/d9f32620.e105d1ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1914],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>b});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<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),i=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=i(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),p=i(r),m=o,b=p["".concat(s,".").concat(m)]||p[m]||g[m]||a;return r?n.createElement(b,l(l({ref:t},c),{},{components:r})):n.createElement(b,l({ref:t},c))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=m;var u={};for(var s in t)hasOwnProperty.call(t,s)&&(u[s]=t[s]);u.originalType=e,u[p]="string"==typeof e?e:o,l[1]=u;for(var i=2;i<a;i++)l[i]=r[i];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},2900:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>g,frontMatter:()=>a,metadata:()=>u,toc:()=>i});var n=r(7462),o=(r(7294),r(3905));const a={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},l=void 0,u={permalink:"/blog/welcome",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",formattedDate:"August 26, 2021",tags:[{label:"facebook",permalink:"/blog/tags/facebook"},{label:"hello",permalink:"/blog/tags/hello"},{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},nextItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"}},s={authorsImageUrls:[void 0,void 0]},i=[],c={toc:i},p="wrapper";function g(e){let{components:t,...a}=e;return(0,o.kt)(p,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://docusaurus.io/docs/blog"},"Docusaurus blogging features")," are powered by the ",(0,o.kt)("a",{parentName:"p",href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog"},"blog plugin"),"."),(0,o.kt)("p",null,"Simply add Markdown files (or folders) to the ",(0,o.kt)("inlineCode",{parentName:"p"},"blog")," directory."),(0,o.kt)("p",null,"Regular blog authors can be added to ",(0,o.kt)("inlineCode",{parentName:"p"},"authors.yml"),"."),(0,o.kt)("p",null,"The blog post date can be extracted from filenames, such as:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"2019-05-30-welcome.md")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"2019-05-30-welcome/index.md"))),(0,o.kt)("p",null,"A blog post folder can be convenient to co-locate blog post images:"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Docusaurus Plushie",src:r(5125).Z,width:"1500",height:"500"})),(0,o.kt)("p",null,"The blog supports tags as well!"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"And if you don't want a blog"),": just delete this directory, and use ",(0,o.kt)("inlineCode",{parentName:"p"},"blog: false")," in your Docusaurus config."))}g.isMDXComponent=!0},5125:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"}}]); \ No newline at end of file diff --git a/assets/js/db14c9d3.e0bebd26.js b/assets/js/db14c9d3.e0bebd26.js new file mode 100644 index 000000000..30949b887 --- /dev/null +++ b/assets/js/db14c9d3.e0bebd26.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7017],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>g});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 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 o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},m=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=p(r),d=a,g=u["".concat(c,".").concat(d)]||u[d]||s[d]||i;return r?n.createElement(g,o(o({ref:t},m),{},{components:r})):n.createElement(g,o({ref:t},m))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<i;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},6478:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>s,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const i={},o="Merge.Plugin",l={unversionedId:"monitoring/metrics-explanation/merge.plugin",id:"monitoring/metrics-explanation/merge.plugin",title:"Merge.Plugin",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/merge.plugin.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/merge.plugin",permalink:"/docs/monitoring/metrics-explanation/merge.plugin",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/merge.plugin.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"JsonRpc",permalink:"/docs/monitoring/metrics-explanation/jsonrpc"},next:{title:"Mev",permalink:"/docs/monitoring/metrics-explanation/mev"}},c={},p=[],m={toc:p},u="wrapper";function s(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"mergeplugin"},"Merge.Plugin"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_forkchoice_upded_execution_time"),(0,a.kt)("td",{parentName:"tr",align:"left"},"ForkchoiceUpded request execution time")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_get_payload_requests"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of GetPayload Requests")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_new_payload_execution_time"),(0,a.kt)("td",{parentName:"tr",align:"left"},"NewPayload request execution time")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_number_of_transactions_in_get_payload"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of Transactions included in the Last GetPayload Request")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dcd469cb.665e5d92.js b/assets/js/dcd469cb.665e5d92.js new file mode 100644 index 000000000..c73758ce1 --- /dev/null +++ b/assets/js/dcd469cb.665e5d92.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9330],{3905:(t,e,n)=>{n.d(e,{Zo:()=>m,kt:()=>s});var a=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?l(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function o(t,e){if(null==t)return{};var n,a,r=function(t,e){if(null==t)return{};var n,a,r={},l=Object.keys(t);for(a=0;a<l.length;a++)n=l[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a<l.length;a++)n=l[a],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var N=a.createContext({}),p=function(t){var e=a.useContext(N),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},m=function(t){var e=p(t.components);return a.createElement(N.Provider,{value:e},t.children)},f="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},c=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,N=t.parentName,m=o(t,["components","mdxType","originalType","parentName"]),f=p(n),c=r,s=f["".concat(N,".").concat(c)]||f[c]||d[c]||l;return n?a.createElement(s,i(i({ref:e},m),{},{components:n})):a.createElement(s,i({ref:e},m))}));function s(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=c;var o={};for(var N in e)hasOwnProperty.call(e,N)&&(o[N]=e[N]);o.originalType=t,o[f]="string"==typeof t?t:r,i[1]=o;for(var p=2;p<l;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},9153:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>N,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const l={},i="Network",o={unversionedId:"fundamentals/configuration/network",id:"fundamentals/configuration/network",title:"Network",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/network.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/network",permalink:"/docs/fundamentals/configuration/network",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/network.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Mining",permalink:"/docs/fundamentals/configuration/mining"},next:{title:"Plugin",permalink:"/docs/fundamentals/configuration/plugin"}},N={},p=[],m={toc:p},f="wrapper";function d(t){let{components:e,...n}=t;return(0,r.kt)(f,(0,a.Z)({},m,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"network"},"Network"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ActivePeersMaxCount"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_ACTIVEPEERSMAXCOUNT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[OBSOLETE]","(Use MaxActivePeers instead) Max number of connected peers."),(0,r.kt)("td",{parentName:"tr",align:"left"},"50")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Bootnodes"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_BOOTNODES"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Bootnodes"),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DiagTracerEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Enabled very verbose diag network tracing files for DEV purposes (Nethermind specific)"),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DiscoveryDns"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_DISCOVERYDNS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Use tree is available through a DNS name. Keep it empty for the default of {chainName}.ethdisco.net"),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DiscoveryPort"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_DISCOVERYPORT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"UDP port number for incoming discovery connections. Keep same as TCP/IP port because using different values has never been tested."),(0,r.kt)("td",{parentName:"tr",align:"left"},"30303")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EnableUPnP"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_ENABLEUPNP"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Enable automatic port forwarding via UPnP"),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ExternalIp"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_EXTERNALIP"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Use only if your node cannot resolve external IP automatically."),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LocalIp"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_LOCALIP"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Use only if your node cannot resolve local IP automatically."),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxActivePeers"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Same as ActivePeersMaxCount."),(0,r.kt)("td",{parentName:"tr",align:"left"},"50")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxNettyArenaCount"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[TECHNICAL]"," Defines maximum netty arena count. Increasing this on high core machine without increasing memory budget may reduce chunk size so much that it causes significant netty huge allocation."),(0,r.kt)("td",{parentName:"tr",align:"left"},"8")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MaxOutgoingConnectPerSec"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_MAXOUTGOINGCONNECTPERSEC"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[TECHNICAL]"," Max number of new outgoing connections per second. Default is 20."),(0,r.kt)("td",{parentName:"tr",align:"left"},"20")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"NettyArenaOrder"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_NETTYARENAORDER"),(0,r.kt)("td",{parentName:"tr",align:"left"},"[TECHNICAL]"," Defines the size of a netty arena order. Default depends on memory hint."),(0,r.kt)("td",{parentName:"tr",align:"left"},"-1")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"OnlyStaticPeers"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If set to 'true' then no connections will be made to non-static peers."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"P2PPort"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_P2PPORT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"TPC/IP port number for incoming P2P connections."),(0,r.kt)("td",{parentName:"tr",align:"left"},"30303")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PriorityPeersMaxCount"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Max number of priority peers. Can be overwritten by value from plugin config."),(0,r.kt)("td",{parentName:"tr",align:"left"},"0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StaticPeers"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_NETWORKCONFIG_STATICPEERS"),(0,r.kt)("td",{parentName:"tr",align:"left"},"List of nodes for which we will keep the connection on. Static nodes are not counted to the max number of nodes limit."),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dd2f7272.0088b8ea.js b/assets/js/dd2f7272.0088b8ea.js new file mode 100644 index 000000000..10af5014f --- /dev/null +++ b/assets/js/dd2f7272.0088b8ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7169],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>g});var o=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,o,r=function(e,n){if(null==e)return{};var t,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=o.createContext({}),s=function(e){var n=o.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},u=function(e){var n=s(e.components);return o.createElement(c.Provider,{value:n},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},f=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(t),f=r,g=p["".concat(c,".").concat(f)]||p[f]||d[f]||i;return t?o.createElement(g,a(a({ref:n},u),{},{components:t})):o.createElement(g,a({ref:n},u))}));function g(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,a=new Array(i);a[0]=f;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l[p]="string"==typeof e?e:r,a[1]=l;for(var s=2;s<i;s++)a[s]=t[s];return o.createElement.apply(null,a)}return o.createElement.apply(null,t)}f.displayName="MDXCreateElement"},7316:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var o=t(7462),r=(t(7294),t(3905));const i={},a="Custom Analytic Tools",l={unversionedId:"for-developers/custom-analytic-tools",id:"for-developers/custom-analytic-tools",title:"Custom Analytic Tools",description:"Check plugins for some easy addition of analytical tools",source:"@site/docs/05-for-developers/custom-analytic-tools.md",sourceDirName:"05-for-developers",slug:"/for-developers/custom-analytic-tools",permalink:"/docs/for-developers/custom-analytic-tools",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/05-for-developers/custom-analytic-tools.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Coding Style",permalink:"/docs/for-developers/coding-style"},next:{title:"Plugins",permalink:"/docs/for-developers/plugins"}},c={},s=[],u={toc:s},p="wrapper";function d(e){let{components:n,...t}=e;return(0,r.kt)(p,(0,o.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"custom-analytic-tools"},"Custom Analytic Tools"),(0,r.kt)("p",null,"Check plugins for some easy addition of analytical tools"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("a",{parentName:"p",href:"/docs/for-developers/plugins"},"Learn more about Plugins"))),(0,r.kt)("p",null,"You can also read more about some useful interfaces below:"),(0,r.kt)("p",null,"There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#.\nBelow you will find an example of using two very useful interfaces - ",(0,r.kt)("inlineCode",{parentName:"p"},"IBlockVisitor")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"ITreeVisitor"),"."),(0,r.kt)("p",null,"Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for\ncalculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},' [RunnerStepDependencies(typeof(ReviewBlockTree))]\n public class RunCustomTools : IStep\n {\n private readonly EthereumRunnerContext _context;\n\n public RunCustomTools(EthereumRunnerContext context)\n {\n _context = context;\n }\n\n public Task Execute(CancellationToken cancellationToken)\n {\n ILogger logger = _context.LogManager.GetClassLogger();\n IInitConfig initConfig = _context.Config<IInitConfig>();\n\n switch (initConfig.DiagnosticMode)\n {\n case DiagnosticMode.VerifySupply:\n {\n logger.Info("Genesis supply:");\n SupplyVerifier supplyVerifier = new SupplyVerifier(logger);\n StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);\n StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);\n stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);\n\n Block head = _context.BlockTree!.Head;\n logger.Info($"Head ({head.Number}) block supply:");\n supplyVerifier = new SupplyVerifier(logger);\n stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);\n break;\n }\n case DiagnosticMode.VerifyRewards:\n _context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n')),(0,r.kt)("p",null,"Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded\nbranches if you wish so:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive => 10618000;\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n private UInt256 _blockRewards;\n\n public RewardsVerifier(ILogManager logManager)\n {\n _logger = logManager.GetClassLogger();\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task<BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n _blockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task<LevelVisitOutcome> VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task<bool> VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task<bool> VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task<LevelVisitOutcome> VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n')),(0,r.kt)("p",null,"And here you will find an example of a tree visitor that sums up all the account balances:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},' public class SupplyVerifier : ITreeVisitor\n {\n private readonly ILogger _logger;\n private UInt256 _balance = UInt256.Zero;\n private int _accountsVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public bool ShouldVisit(Keccak nextNode) { return true; }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n _balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }\n }\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e0e00496.f8306781.js b/assets/js/e0e00496.f8306781.js new file mode 100644 index 000000000..1a7a61f7f --- /dev/null +++ b/assets/js/e0e00496.f8306781.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[713],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(7294);function a(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 i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),d=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=d(n),h=a,m=c["".concat(s,".").concat(h)]||c[h]||p[h]||o;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:a,i[1]=l;for(var d=2;d<o;d++)i[d]=n[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}h.displayName="MDXCreateElement"},7964:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var r=n(7462),a=(n(7294),n(3905));const o={},i="FAQ",l={unversionedId:"resources/faq",id:"resources/faq",title:"FAQ",description:"How do I upgrade my node?",source:"@site/docs/07-resources/faq.md",sourceDirName:"07-resources",slug:"/resources/faq",permalink:"/docs/resources/faq",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/07-resources/faq.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Connecting Wallet",permalink:"/docs/resources/connecting-wallet"},next:{title:"Firewall Configuration",permalink:"/docs/resources/firewall-configuration"}},s={},d=[{value:"How do I upgrade my node?",id:"how-do-i-upgrade-my-node",level:2},{value:"Upgrading Nethermind for Docker users",id:"upgrading-nethermind-for-docker-users",level:3},{value:"Upgrading Nethermind for Systemd users",id:"upgrading-nethermind-for-systemd-users",level:3},{value:"Upgrading Nethermind when running as a background process",id:"upgrading-nethermind-when-running-as-a-background-process",level:3},{value:"What is the minimum viable config to serve ETH2 validator requests?",id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests",level:2},{value:"Can I disable logging to file?",id:"can-i-disable-logging-to-file",level:2},{value:"Can I disable logging of JSON RPC calls?",id:"can-i-disable-logging-of-json-rpc-calls",level:2},{value:"How can I configure validator on AuRa / Clique?",id:"how-can-i-configure-validator-on-aura--clique",level:2},{value:"My network bandwidth is used up by the Nethermind node",id:"my-network-bandwidth-is-used-up-by-the-nethermind-node",level:2},{value:"Is my node synced?",id:"is-my-node-synced",level:2},{value:"I want to run two or more nodes on one machine. How can I achieve this?",id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this",level:2}],u={toc:d},c="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"faq"},"FAQ"),(0,a.kt)("h2",{id:"how-do-i-upgrade-my-node"},"How do I upgrade my node?"),(0,a.kt)("h3",{id:"upgrading-nethermind-for-docker-users"},"Upgrading Nethermind for Docker users"),(0,a.kt)("p",null,"Pull the latest version of Nethermind using the ",(0,a.kt)("inlineCode",{parentName:"p"},"latest")," tag. You can find specific tag\nat ",(0,a.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/nethermind/nethermind/tags"},"Docker Hub"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"docker pull nethermind/nethermind:latest\n")),(0,a.kt)("p",null,"or pull with docker-compose if the ",(0,a.kt)("inlineCode",{parentName:"p"},"nethermind/nethermind:latest")," base image is specified"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"docker-compose pull\n")),(0,a.kt)("h3",{id:"upgrading-nethermind-for-systemd-users"},"Upgrading Nethermind for Systemd users"),(0,a.kt)("p",null,"Simply download the latest Nethermind package either\nfrom ",(0,a.kt)("a",{parentName:"p",href:"https://downloads.nethermind.io/"},"https://downloads.nethermind.io"),"\nor ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind/releases"},"https://github.com/NethermindEth/nethermind/releases")," and make\nsure that the package is extracted in the ",(0,a.kt)("inlineCode",{parentName:"p"},"WorkingDirectory")," path defined in your ",(0,a.kt)("inlineCode",{parentName:"p"},"systemd")," service. Make sure to stop\nthe service before the upgrade and start it after."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-systemd"},"WorkingDirectory=/home/nethermind/nethermind\n")),(0,a.kt)("h3",{id:"upgrading-nethermind-when-running-as-a-background-process"},"Upgrading Nethermind when running as a background process"),(0,a.kt)("p",null,"Download the latest Nethermind package either from ",(0,a.kt)("a",{parentName:"p",href:"https://downloads.nethermind.io/"},"https://downloads.nethermind.io"),"\nor ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind/releases"},"https://github.com/NethermindEth/nethermind/releases")," and\nextract the package in the folder you currently use for running Nethermind. Make sure the service is down before the\nupdate. Make sure to stop the service before the upgrade and start it after."),(0,a.kt)("h2",{id:"what-is-the-minimum-viable-config-to-serve-eth2-validator-requests"},"What is the minimum viable config to serve ETH2 validator requests?"),(0,a.kt)("p",null,"This config downloads a minimal amount of bodies and receipts to be able to serve ETH2 validator requests since the\ndeposit contract deployment. It also enables JSON RPC (",(0,a.kt)("strong",{parentName:"p"},"important - make sure that you do not open firewall to the\noutside world!"),")"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"nethermind --config mainnet --Init.BaseDbPath /your/db/path\n")),(0,a.kt)("p",null,"If you have any issues, please reach out to us on Discord: ",(0,a.kt)("a",{parentName:"p",href:"https://discord.gg/X539yhn"},"https://discord.gg/X539yhn"),"."),(0,a.kt)("h2",{id:"can-i-disable-logging-to-file"},"Can I disable logging to file?"),(0,a.kt)("p",null,"You can find more details on the logging config page ",(0,a.kt)("a",{parentName:"p",href:"/docs/fundamentals/logs/logging-configuration"},"here")),(0,a.kt)("h2",{id:"can-i-disable-logging-of-json-rpc-calls"},"Can I disable logging of JSON RPC calls?"),(0,a.kt)("p",null,"You can find more details on the logging config page ",(0,a.kt)("a",{parentName:"p",href:"/docs/fundamentals/logs/logging-configuration"},"here")),(0,a.kt)("h2",{id:"how-can-i-configure-validator-on-aura--clique"},"How can I configure validator on AuRa / Clique?"),(0,a.kt)("p",null,"You can find more details on running validators in the docs ->\nfor ",(0,a.kt)("a",{parentName:"p",href:"/docs/resources/guides-and-helpers/validator-setup/aura-validator"},"AuRa")," and\nfor ",(0,a.kt)("a",{parentName:"p",href:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain"},"Clique"),"."),(0,a.kt)("p",null,"You can learn more about how to setup a aura validator ",(0,a.kt)("a",{parentName:"p",href:"/docs/resources/guides-and-helpers/validator-setup/aura-validator"},"here")),(0,a.kt)("h2",{id:"my-network-bandwidth-is-used-up-by-the-nethermind-node"},"My network bandwidth is used up by the Nethermind node"),(0,a.kt)("p",null,"Try changing the config to a lower number (",(0,a.kt)("inlineCode",{parentName:"p"},"--Network.ActivePeersMaxCount 25"),")"),(0,a.kt)("h2",{id:"is-my-node-synced"},"Is my node synced?"),(0,a.kt)("p",null,"Your node is synced when it shows log lines starting with:"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Processed ...")),(0,a.kt)("p",null,"And the block numbers shown are at the head of the chain."),(0,a.kt)("p",null,"Also, to check if your node is synced, you may execute ",(0,a.kt)("inlineCode",{parentName:"p"},"eth_syncing")," call check its result"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-text"},'curl -X POST --data \'{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}\' localhost:8545\n')),(0,a.kt)("p",null,"If the result shows ",(0,a.kt)("inlineCode",{parentName:"p"},"false")," it means that your node is ",(0,a.kt)("strong",{parentName:"p"},"synced")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-text"},'{"jsonrpc":"2.0","result":false,"id":1}\n')),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"In blockchain, any node can never be 100% sure it is synced because there is no central source of truth - so your node\nis generally not able to tell you that it is synced but, it is able to tell you that it believes it is synced based on\nwhat it knows from the peers that it talks to).")),(0,a.kt)("h2",{id:"i-want-to-run-two-or-more-nodes-on-one-machine-how-can-i-achieve-this"},"I want to run two or more nodes on one machine. How can I achieve this?"),(0,a.kt)("p",null,"You have to configure a few ports used by Nethermind."),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"Settings"),(0,a.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,a.kt)("th",{parentName:"tr",align:null},"Comment"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"JsonRpc.EnginePort"),(0,a.kt)("td",{parentName:"tr",align:null},"8551"),(0,a.kt)("td",{parentName:"tr",align:null},"Remember to change it on your Consensus client.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"JsonRpc.Port"),(0,a.kt)("td",{parentName:"tr",align:null},"8545"),(0,a.kt)("td",{parentName:"tr",align:null},"Only needed if you are using standard JsonRpc")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"JsonRpc.WebSocketsPort"),(0,a.kt)("td",{parentName:"tr",align:null},"8545"),(0,a.kt)("td",{parentName:"tr",align:null},"By default same as the JsonRpc port. Only relevant when you use WebSockets")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Network.P2PPort"),(0,a.kt)("td",{parentName:"tr",align:null},"30303"),(0,a.kt)("td",{parentName:"tr",align:null})),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},"Network.DiscoveryPort"),(0,a.kt)("td",{parentName:"tr",align:null},"30303"),(0,a.kt)("td",{parentName:"tr",align:null})))),(0,a.kt)("p",null,"The example of parameters that you have to pass to your second node when the first has been running with default\nsettings:\\\n",(0,a.kt)("inlineCode",{parentName:"p"},"--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e16015ca.5e1b3f1e.js b/assets/js/e16015ca.5e1b3f1e.js new file mode 100644 index 000000000..8ab1aa1d9 --- /dev/null +++ b/assets/js/e16015ca.5e1b3f1e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9700],{5688:e=>{e.exports=JSON.parse('{"label":"hola","permalink":"/blog/tags/hola","allTagsPath":"/blog/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/e273c56f.171d7f11.js b/assets/js/e273c56f.171d7f11.js new file mode 100644 index 000000000..6baa022ba --- /dev/null +++ b/assets/js/e273c56f.171d7f11.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2362],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});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 a(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 i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var u=o.createContext({}),l=function(e){var t=o.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=l(e.components);return o.createElement(u.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},g=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=l(r),g=n,f=p["".concat(u,".").concat(g)]||p[g]||m[g]||a;return r?o.createElement(f,i(i({ref:t},c),{},{components:r})):o.createElement(f,i({ref:t},c))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=g;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[p]="string"==typeof e?e:n,i[1]=s;for(var l=2;l<a;l++)i[l]=r[l];return o.createElement.apply(null,i)}return o.createElement.apply(null,r)}g.displayName="MDXCreateElement"},1947:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var o=r(7462),n=(r(7294),r(3905));const a={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},i=void 0,s={permalink:"/blog/first-blog-post",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",formattedDate:"May 28, 2019",tags:[{label:"hola",permalink:"/blog/tags/hola"},{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},prevItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},u={authorsImageUrls:[void 0]},l=[],c={toc:l},p="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e33c6b61.0a62e53a.js b/assets/js/e33c6b61.0a62e53a.js new file mode 100644 index 000000000..4e9d746f4 --- /dev/null +++ b/assets/js/e33c6b61.0a62e53a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7199],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>m});var i=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,i,r=function(e,n){if(null==e)return{};var t,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)t=a[i],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)t=a[i],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=i.createContext({}),c=function(e){var n=i.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},u=function(e){var n=c(e.components);return i.createElement(s.Provider,{value:n},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},g=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(t),g=r,m=p["".concat(s,".").concat(g)]||p[g]||d[g]||a;return t?i.createElement(m,o(o({ref:n},u),{},{components:t})):i.createElement(m,o({ref:n},u))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,o=new Array(a);o[0]=g;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var c=2;c<a;c++)o[c]=t[c];return i.createElement.apply(null,o)}return i.createElement.apply(null,t)}g.displayName="MDXCreateElement"},1055:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var i=t(7462),r=(t(7294),t(3905));const a={},o="Plugins",l={unversionedId:"for-developers/plugins",id:"for-developers/plugins",title:"Plugins",description:"Nethermind plugins is a powerful way of extending your local node capabilities.",source:"@site/docs/05-for-developers/plugins.md",sourceDirName:"05-for-developers",slug:"/for-developers/plugins",permalink:"/docs/for-developers/plugins",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/05-for-developers/plugins.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Custom Analytic Tools",permalink:"/docs/for-developers/custom-analytic-tools"},next:{title:"Web3.py",permalink:"/docs/for-developers/web3.py"}},s={},c=[{value:"RPC Plugin example:",id:"rpc-plugin-example",level:2},{value:"CLI Plugin example:",id:"cli-plugin-example",level:2},{value:"Block Tree Visitor Plugin example:",id:"block-tree-visitor-plugin-example",level:2},{value:"Config plugin example:",id:"config-plugin-example",level:2},{value:"State Tree Visitor example:",id:"state-tree-visitor-example",level:2}],u={toc:c},p="wrapper";function d(e){let{components:n,...a}=e;return(0,r.kt)(p,(0,i.Z)({},u,a,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"plugins"},"Plugins"),(0,r.kt)("p",null,"Nethermind plugins is a powerful way of extending your local node capabilities."),(0,r.kt)("p",null,"(","see also an article\nhere: ",(0,r.kt)("a",{parentName:"p",href:"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"},"https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59"),")"),(0,r.kt)("p",null,"Plugins that you can write:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Plugin Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"What can it be used for?"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RPC"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Adding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Block Tree Visitors"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Code allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Devp2p"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Allows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"State Visitors"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Allow you to run aggregated analysis on the entire raw format state ","(","or just some accounts storages",")",".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Config"),(0,r.kt)("td",{parentName:"tr",align:"left"},"You can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"TxPool"),(0,r.kt)("td",{parentName:"tr",align:"left"},"TxPool behaviours and listeners.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Tracers"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Custom, powerful EVM tracers capable of extracting elements of EVM execution in real time.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"CLI"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Additional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors.")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Note:")," When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers\non some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its\nresponsibility of plugin writer to correctly handle those exceptions."),(0,r.kt)("p",null,"How to build a plugin? We included an example inside the Nethermind.Analytics plugin:"),(0,r.kt)("p",null,(0,r.kt)("img",{src:t(864).Z,width:"547",height:"417"})),(0,r.kt)("h2",{id:"rpc-plugin-example"},"RPC Plugin example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-csharp"},' [RpcModule(ModuleType.Clique)]\n public interface IAnalyticsModule : IModule\n {\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]\n ResultWrapper<UInt256> analytics_verifySupply();\n\n [JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]\n ResultWrapper<UInt256> analytics_verifyRewards();\n }\n')),(0,r.kt)("h2",{id:"cli-plugin-example"},"CLI Plugin example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-csharp"},'[CliModule("analytics")]\npublic class AnalyticsCliModule : CliModuleBase\n{\n [CliFunction("analytics", "verifySupply")]\n public string VerifySupply()\n {\n return NodeManager.Post<string>("analytics_verifySupply").Result;\n }\n\n [CliFunction("analytics", "verifyRewards")]\n public string VerifyRewards()\n {\n return NodeManager.Post<string>("analytics_verifyRewards").Result;\n }\n\n public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)\n : base(cliEngine, nodeManager) { }\n}\n')),(0,r.kt)("h2",{id:"block-tree-visitor-plugin-example"},"Block Tree Visitor Plugin example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-csharp"},' public class RewardsVerifier : IBlockTreeVisitor\n {\n private ILogger _logger;\n public bool PreventsAcceptingNewBlocks => true;\n public long StartLevelInclusive => 0;\n public long EndLevelExclusive { get; }\n\n private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");\n private UInt256 _uncles;\n\n public UInt256 BlockRewards { get; private set; }\n\n public RewardsVerifier(ILogManager logManager, long endLevelExclusive)\n {\n _logger = logManager.GetClassLogger();\n EndLevelExclusive = endLevelExclusive;\n BlockRewards = _genesisAllocations;\n }\n\n private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);\n\n public Task<BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken)\n {\n BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);\n for (int i = 0; i < rewards.Length; i++)\n {\n if (rewards[i].RewardType == BlockRewardType.Uncle)\n {\n _uncles += rewards[i].Value;\n }\n else\n {\n BlockRewards += rewards[i].Value;\n }\n }\n\n _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");\n return Task.FromResult(BlockVisitOutcome.None);\n }\n\n public Task<LevelVisitOutcome> VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n\n public Task<bool> VisitMissing(Keccak hash, CancellationToken cancellationToken)\n => Task.FromResult(true);\n\n public Task<HeaderVisitOutcome> VisitHeader(BlockHeader header, CancellationToken cancellationToken)\n => Task.FromResult(HeaderVisitOutcome.None);\n\n public Task<LevelVisitOutcome> VisitLevelEnd(CancellationToken cancellationToken)\n => Task.FromResult(LevelVisitOutcome.None);\n }\n')),(0,r.kt)("h2",{id:"config-plugin-example"},"Config plugin example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-csharp"},"public class AnalyticsConfig : IAnalyticsConfig\n{\n public bool PluginsEnabled { get; set; }\n public bool StreamTransactions { get; set; }\n public bool StreamBlocks { get; set; }\n public bool LogPublishedData { get; set; }\n}\n")),(0,r.kt)("h2",{id:"state-tree-visitor-example"},"State Tree Visitor example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-csharp"},'public class SupplyVerifier : ITreeVisitor\n{\n private readonly ILogger _logger;\n private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();\n private int _accountsVisited;\n private int _nodesVisited;\n\n public SupplyVerifier(ILogger logger)\n {\n _logger = logger;\n }\n\n public UInt256 Balance { get; set; } = UInt256.Zero;\n\n public bool ShouldVisit(Keccak nextNode)\n {\n if (_ignoreThisOne.Count > 16)\n {\n _logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");\n }\n\n if (_ignoreThisOne.Contains(nextNode))\n {\n _ignoreThisOne.Remove(nextNode);\n return false;\n }\n\n return true;\n }\n\n public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)\n {\n }\n\n public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)\n {\n _logger.Warn($"Missing node {nodeHash}");\n }\n\n public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n for (int i = 0; i < 16; i++)\n {\n Keccak childHash = node.GetChildHash(i);\n if (childHash != null)\n {\n _ignoreThisOne.Add(childHash);\n }\n }\n }\n }\n\n public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n if (trieVisitContext.IsStorage)\n {\n _ignoreThisOne.Add(node.GetChildHash(0));\n }\n }\n\n public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)\n {\n _nodesVisited++;\n\n if (trieVisitContext.IsStorage)\n {\n return;\n }\n\n AccountDecoder accountDecoder = new AccountDecoder();\n Account account = accountDecoder.Decode(node.Value.AsRlpStream());\n Balance += account.Balance;\n _accountsVisited++;\n\n _logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");\n }\n\n public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)\n {\n _nodesVisited++;\n }\n}\n')))}d.isMDXComponent=!0},864:(e,n,t)=>{t.d(n,{Z:()=>i});const i=t.p+"assets/images/image(133)-d0b560bfa6aa952c52df2334be1287fa.png"}}]); \ No newline at end of file diff --git a/assets/js/e533526e.7fbd9ca9.js b/assets/js/e533526e.7fbd9ca9.js new file mode 100644 index 000000000..78d7366f3 --- /dev/null +++ b/assets/js/e533526e.7fbd9ca9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6353],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>k});var r=n(7294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function o(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){a(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function l(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n,r,a={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}var c=r.createContext({}),m=function(t){var e=r.useContext(c),n=e;return t&&(n="function"==typeof t?t(e):o(o({},e),t)),n},p=function(t){var e=m(t.components);return r.createElement(c.Provider,{value:e},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},f=r.forwardRef((function(t,e){var n=t.components,a=t.mdxType,i=t.originalType,c=t.parentName,p=l(t,["components","mdxType","originalType","parentName"]),s=m(n),f=a,k=s["".concat(c,".").concat(f)]||s[f]||d[f]||i;return n?r.createElement(k,o(o({ref:e},p),{},{components:n})):r.createElement(k,o({ref:e},p))}));function k(t,e){var n=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var i=n.length,o=new Array(i);o[0]=f;var l={};for(var c in e)hasOwnProperty.call(e,c)&&(l[c]=e[c]);l.originalType=t,l[s]="string"==typeof t?t:a,o[1]=l;for(var m=2;m<i;m++)o[m]=n[m];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},2808:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>m});var r=n(7462),a=(n(7294),n(3905));const i={},o="Blockchain",l={unversionedId:"monitoring/metrics-explanation/blockchain",id:"monitoring/metrics-explanation/blockchain",title:"Blockchain",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/blockchain.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/blockchain",permalink:"/docs/monitoring/metrics-explanation/blockchain",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/blockchain.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"AccountAbstraction.Network",permalink:"/docs/monitoring/metrics-explanation/accountabstraction.network"},next:{title:"Consensus.AuRa",permalink:"/docs/monitoring/metrics-explanation/consensus.aura"}},c={},m=[],p={toc:m},s="wrapper";function d(t){let{components:e,...n}=t;return(0,a.kt)(s,(0,r.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"blockchain"},"Blockchain"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_best_known_block_number"),(0,a.kt)("td",{parentName:"tr",align:"left"},"The estimated highest block available.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_blockchain_height"),(0,a.kt)("td",{parentName:"tr",align:"left"},"The current height of the canonical chain.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_blocks"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of blocks processed")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_blocks_sealed"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of sealed blocks")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_failed_block_seals"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of failed block seals")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_gas_limit"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Gas Limit for processed blocks")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_gas_used"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Gas Used in processed blocks")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_last_difficulty"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Difficulty of the last block")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_mgas"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total MGas processed")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_processing_queue_size"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of blocks awaiting for processing.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_recovery_queue_size"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of blocks awaiting for recovery of public keys from signatures.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_reorganizations"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of chain reorganizations")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_total_difficulty"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total difficulty on the chain")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_transactions"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Total number of transactions processed")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ebbf84a8.2720b908.js b/assets/js/ebbf84a8.2720b908.js new file mode 100644 index 000000000..4c4c00ace --- /dev/null +++ b/assets/js/ebbf84a8.2720b908.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5251],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>h});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,a,i=function(e,n){if(null==e)return{};var t,a,i={},r=Object.keys(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=a.createContext({}),d=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},c=function(e){var n=d(e.components);return a.createElement(s.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=d(t),m=i,h=p["".concat(s,".").concat(m)]||p[m]||u[m]||r;return t?a.createElement(h,o(o({ref:n},c),{},{components:t})):a.createElement(h,o({ref:n},c))}));function h(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=m;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[p]="string"==typeof e?e:i,o[1]=l;for(var d=2;d<r;d++)o[d]=t[d];return a.createElement.apply(null,o)}return a.createElement.apply(null,t)}m.displayName="MDXCreateElement"},6745:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>d});var a=t(7462),i=(t(7294),t(3905));const r={description:"Set of validators sealing blocks on private clique network"},o="How to setup a Nethermind only Clique based chain",l={unversionedId:"fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain",id:"fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain",title:"How to setup a Nethermind only Clique based chain",description:"Set of validators sealing blocks on private clique network",source:"@site/docs/02-fundamentals/09-private-networks/how-to-setup-a-nethermind-only-clique-based-chain.md",sourceDirName:"02-fundamentals/09-private-networks",slug:"/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain",permalink:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/09-private-networks/how-to-setup-a-nethermind-only-clique-based-chain.md",tags:[],version:"current",frontMatter:{description:"Set of validators sealing blocks on private clique network"},sidebar:"tutorialSidebar",previous:{title:"Private Networks",permalink:"/docs/fundamentals/private-networks/"},next:{title:"How to setup a Nethermind only Spaceneth based chain",permalink:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain"}},s={},d=[{value:"TL;DR",id:"tldr",level:3},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Manual setup",id:"manual-setup",level:3}],c={toc:d},p="wrapper";function u(e){let{components:n,...r}=e;return(0,i.kt)(p,(0,a.Z)({},c,r,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"how-to-setup-a-nethermind-only-clique-based-chain"},"How to setup a Nethermind only Clique based chain"),(0,i.kt)("h3",{id:"tldr"},"TL;DR"),(0,i.kt)("p",null,"Download a script that will do all the steps described below for you. It will prompt you 2 things:"," "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Confirm installation of required packages"),(0,i.kt)("li",{parentName:"ul"},"The number of Validators you wish to run in your private network")),(0,i.kt)("p",null,"Script can be\nfound ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind/blob/master/scripts/private-networking/clique-validators.sh"},"here")),(0,i.kt)("p",null,"or use this command to download it:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"wget https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/private-networking/clique-validators.sh\n")),(0,i.kt)("p",null,"Finally give the script permissions and run it (script requires ",(0,i.kt)("inlineCode",{parentName:"p"},"sudo")," privileges):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"chmod +x clique-validators.sh\n./clique-validators.sh\n")),(0,i.kt)("h3",{id:"prerequisites"},"Prerequisites"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Linux bash shell"),(0,i.kt)("li",{parentName:"ul"},"Docker-compose"),(0,i.kt)("li",{parentName:"ul"},"Docker"),(0,i.kt)("li",{parentName:"ul"},"jq"),(0,i.kt)("li",{parentName:"ul"},"openssl")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt-get install -y docker-compose docker.io jq openssl\n")),(0,i.kt)("h3",{id:"manual-setup"},"Manual setup"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"All these steps are automated and written in the above ",(0,i.kt)("inlineCode",{parentName:"p"},"clique-validators.sh")," script.")),(0,i.kt)("p",null,"In this setup we will create a private network of 3 Nethermind nodes running Clique consensus algorithm."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"create separate directory where we will store all files")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"mkdir private-networking\ncd private-networking\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"create folders for each node and genesis")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"mkdir node_1 node_2 node_3 genesis\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"download chainspec file with clique engine and place it in genesis folder (we will be using goerli chainspec in this\nexample)")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"wget https://raw.githubusercontent.com/NethermindEth/nethermind/09389fc28b37605acc5eaed764d3e973969fe319/src/Nethermind/Chains/goerli.json\ncp goerli.json genesis/goerli.json\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"create subfolders in each node folder")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"mkdir node_1/configs node_2/configs node_3/configs\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"create a ",(0,i.kt)("inlineCode",{parentName:"li"},"static-nodes.json")," file and place it in working directory")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"cat <<EOF > static-nodes.json\n[\n\n]\nEOF\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"create ",(0,i.kt)("inlineCode",{parentName:"li"},"config.cfg")," file and place it in ",(0,i.kt)("inlineCode",{parentName:"li"},"node_1/configs")," subfolders (do this for node","_","2 and node","_","3 as well)")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'cat <<EOF > node_1/configs/config.cfg\n{\n "Init": {\n "WebSocketsEnabled": false,\n "StoreReceipts" : true,\n "EnableUnsecuredDevWallet": true,\n "IsMining": true,\n "ChainSpecPath": "/config/genesis/goerli.json",\n "BaseDbPath": "nethermind_db/clique",\n "LogFileName": "clique.logs.txt",\n "StaticNodesPath": "Data/static-nodes.json"\n },\n "Network": {\n "DiscoveryPort": 30300,\n "P2PPort": 30300,\n "LocalIp": "10.5.0.2",\n "ExternalIp": "10.5.0.2"\n },\n "JsonRpc": {\n "Enabled": true,\n "Host": "10.5.0.2",\n "Port": 8545\n },\n "KeyStoreConfig": {\n "TestNodeKey": "8687A55019CCA647F6C063F530D47E9A90725D62D853F4B973E589DB24CA9305"\n }\n}\nEOF\n')),(0,i.kt)("p",null,"For each node you will need to change following items in configuration:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"TestNodeKey")," should be a 64 character length alphanumeric string. Can be generated with openssl for example (openssl\nrand -hex 32)."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"LocalIp"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"ExternalIp")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"Host")," should have the same value and be incremented for each node e.g. 10.5.0.3, 10.5.0.4\nand so on and so forth.")),(0,i.kt)("p",null,"Copy docker-compose file and place it in working directory."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-yaml"},'version: "3.5"\nservices:\n\n node_1:\n image: nethermind/nethermind:1.10.17\n command: --config config\n container_name: node_1\n volumes:\n - ./genesis:/config/genesis\n - ./node_1/configs/config.cfg:/nethermind/configs/config.cfg\n - ./static-nodes.json:/nethermind/Data/static-nodes.json\n - ./node_1/db/clique:/nethermind/nethermind_db/clique\n - ./node_1/keystore:/nethermind/keystore\n ports:\n - 0.0.0.0:8547:8545\n networks:\n vpcbr:\n ipv4_address: 10.5.0.2\n\n node_2:\n image: nethermind/nethermind:1.10.17\n command: --config config\n container_name: node_2\n volumes:\n - ./genesis:/config/genesis\n - ./node_2/configs/config.cfg:/nethermind/configs/config.cfg\n - ./static-nodes.json:/nethermind/Data/static-nodes.json\n - ./node_2/db/clique:/nethermind/nethermind_db/clique\n - ./node_2/keystore:/nethermind/keystore\n ports:\n - 0.0.0.0:8548:8545\n networks:\n vpcbr:\n ipv4_address: 10.5.0.3\n\n node_3:\n image: nethermind/nethermind:1.10.17\n command: --config config\n container_name: node_3\n volumes:\n - ./genesis:/config/genesis\n - ./node_3/configs/config.cfg:/nethermind/configs/config.cfg\n - ./static-nodes.json:/nethermind/Data/static-nodes.json\n - ./node_3/db/clique:/nethermind/nethermind_db/clique\n - ./node_3/keystore:/nethermind/keystore\n ports:\n - 0.0.0.0:8549:8545\n networks:\n vpcbr:\n ipv4_address: 10.5.0.4\n\nnetworks:\n vpcbr:\n driver: bridge\n ipam:\n config:\n - subnet: 10.5.0.0/16\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"run each node separately so that we can copy ",(0,i.kt)("inlineCode",{parentName:"li"},"Enode")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"Node address")," for each node, we will use them later")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose run node_1\n")),(0,i.kt)("p",null,"Stop the node when ",(0,i.kt)("inlineCode",{parentName:"p"},"Nethermind initialization")," completes ",(0,i.kt)("inlineCode",{parentName:"p"},"Ctrl +C"),". Copy ",(0,i.kt)("inlineCode",{parentName:"p"},"This node")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"Node address")," (without 0x\nprefixes) values to a text file. Continue with node","_","2 and node","_","3."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"You can use ",(0,i.kt)("inlineCode",{parentName:"p"},"Nethermind.Cli")," to fetch these values from nodes by executing the following.\\\n",(0,i.kt)("inlineCode",{parentName:"p"},"Nethermind.Cli")," can be found in packages on ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/NethermindEth/nethermind/releases"},"Github Releases"),"\nor ",(0,i.kt)("a",{parentName:"p",href:"http://downloads.nethermind.io/"},"Download Page"),".")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'node.switch("http://localhost:8547")\nnode.enode\nnode.address\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"the file should look similar to this:")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'SIGNER_1="b5bc4d9e63eb1cb16aeeb0fd08e8344283b45b0d"\nSTATIC_NODE_1="enode://2281549869465d98e90cebc45e1d6834a01465a990add7bcf07a49287e7e66b50ca27f9c70a46190cef7ad746dd5d5b6b9dfee0c9954104c8e9bd0d42758ec58@10.5.0.2:30300"\nSIGNER_2="c4e3a14d33f765faaca31672bd90d0c325bfa0cf"\nSTATIC_NODE_2="enode://37878ec16a5ed87c9c80b4648e5428f5c768eddd79483be118319c49d11c4e535dac328b5216696cefe0792b7b64adc4de3aeb377550651e982590e62e5a500e@10.5.0.3:30300"\nSIGNER_3="0076873eb11c627057834fdbdc7b391a33eb9f81"\nSTATIC_NODE_3="enode://6067f06d84c207e6233dacf1f3ef961bd7231f71d5425cbaf843cf19cfd5f7e13b024d234e4e5f6175bdb37c0bbccd14488b481b2280efb66d0631a20ae13ea3@10.5.0.4:30300"\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"copy & paste above variables into your terminal and create ",(0,i.kt)("inlineCode",{parentName:"li"},"EXTRA_VANITY")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"EXTRA_SEAL")," variables")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'EXTRA_VANITY="0x22466c6578692069732061207468696e6722202d204166726900000000000000"\nEXTRA_SEAL="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"create ",(0,i.kt)("inlineCode",{parentName:"li"},"EXTRA_DATA")," variable accordingly\nto ",(0,i.kt)("a",{parentName:"li",href:"https://eips.ethereum.org/EIPS/eip-225"},"https://eips.ethereum.org/EIPS/eip-225"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"EXTRA_DATA=${EXTRA_VANITY}${SIGNER_1}${SIGNER_2}${SIGNER_3}${EXTRA_SEAL}\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"in ",(0,i.kt)("inlineCode",{parentName:"li"},"goerli.json")," chainspec file, modify ",(0,i.kt)("inlineCode",{parentName:"li"},"extraData")," property in ",(0,i.kt)("inlineCode",{parentName:"li"},"genesis")," field")),(0,i.kt)("p",null,"You can do this either manually or using below command"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"cat goerli.json | jq '.genesis.extraData = '\\\"$EXTRA_DATA\\\"'' > genesis/goerli.json\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Modify the content of ",(0,i.kt)("inlineCode",{parentName:"li"},"static-nodes.json")," files by appending ",(0,i.kt)("inlineCode",{parentName:"li"},"Enodes")," to it")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'cat <<EOF > static-nodes.json\n[\n "$STATIC_NODE_1",\n "$STATIC_NODE_2",\n "$STATIC_NODE_3"\n]\nEOF\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"remove databases for each node")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"sudo rm -rf node_1/db/clique node_2/db/clique node_3/db/clique\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"finally run docker-compose file")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose up\n")),(0,i.kt)("p",null,"You should see the private network working and nodes sealing blocks in Clique consensus algorithm \ud83c\udf89"," "),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Clique validators sealing blocks in private network",src:t(2962).Z,width:"1202",height:"644"})))}u.isMDXComponent=!0},2962:(e,n,t)=>{t.d(n,{Z:()=>a});const a=t.p+"assets/images/image(8)-c167de574195bd72de2680358499de50.png"}}]); \ No newline at end of file diff --git a/assets/js/ed4735bd.24b768da.js b/assets/js/ed4735bd.24b768da.js new file mode 100644 index 000000000..f6941f68b --- /dev/null +++ b/assets/js/ed4735bd.24b768da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8367],{3905:(e,t,r)=>{r.d(t,{Zo:()=>f,kt:()=>d});var a=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 o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=a.createContext({}),s=function(e){var t=a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},f=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,f=l(e,["components","mdxType","originalType","parentName"]),p=s(r),m=n,d=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return r?a.createElement(d,i(i({ref:t},f),{},{components:r})):a.createElement(d,i({ref:t},f))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var s=2;s<o;s++)i[s]=r[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},6053:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var a=r(7462),n=(r(7294),r(3905));const o={},i="TraceStore",l={unversionedId:"fundamentals/configuration/tracestore",id:"fundamentals/configuration/tracestore",title:"TraceStore",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/tracestore.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/tracestore",permalink:"/docs/fundamentals/configuration/tracestore",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/tracestore.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Sync",permalink:"/docs/fundamentals/configuration/sync"},next:{title:"TxPool",permalink:"/docs/fundamentals/configuration/txpool"}},c={},s=[],f={toc:s},p="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,a.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"tracestore"},"TraceStore"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BlocksToKeep"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines how many blocks counting from head are kept in the TraceStore, if '0' all traces of processed blocks will be kept."),(0,n.kt)("td",{parentName:"tr",align:"left"},"10000")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"DeserializationParallelization"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Maximum parallelization when deserializing requests for trace_filter. 0 defaults to logical cores, set to something low if you experience too big resource usage."),(0,n.kt)("td",{parentName:"tr",align:"left"},"0")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TRACESTORECONFIG_ENABLED"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines whether the TraceStore plugin is enabled, if 'true' traces will come from DB if possible."),(0,n.kt)("td",{parentName:"tr",align:"left"},"false")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"TraceTypes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_TRACESTORECONFIG_TRACETYPES"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines what kind of traces are saved and kept in TraceStore. Available options are: Trace, Rewards, VmTrace, StateDiff or just All."),(0,n.kt)("td",{parentName:"tr",align:"left"},"Trace, Rewards")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/edcc1cdc.495b5304.js b/assets/js/edcc1cdc.495b5304.js new file mode 100644 index 000000000..fc1b4d219 --- /dev/null +++ b/assets/js/edcc1cdc.495b5304.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7466],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var d=n.createContext({}),u=function(e){var t=n.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=u(e.components);return n.createElement(d.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,d=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),s=u(a),c=r,k=s["".concat(d,".").concat(c)]||s[c]||m[c]||l;return a?n.createElement(k,i(i({ref:t},p),{},{components:a})):n.createElement(k,i({ref:t},p))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[s]="string"==typeof e?e:r,i[1]=o;for(var u=2;u<l;u++)i[u]=a[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}c.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:a,className:i}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),o=a(6550),d=a(1980),u=a(7392),p=a(12);function s(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function m(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??s(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function c(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function k(e){let{queryString:t=!1,groupId:a}=e;const n=(0,o.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,d._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function b(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=m(e),[i,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!c({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[d,u]=k({queryString:a,groupId:n}),[s,b]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,p.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),f=(()=>{const e=d??s;return c({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{f&&o(f)}),[f]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!c({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),b(e)}),[u,b,l]),tabValues:l}}var f=a(2389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){let{className:t,block:a,selectedValue:o,selectValue:d,tabValues:u}=e;const p=[],{blockElementScrollPositionUntilNextRender:s}=(0,i.o5)(),m=e=>{const t=e.currentTarget,a=p.indexOf(t),n=u[a].value;n!==o&&(s(t),d(n))},c=e=>{let t=null;switch(e.key){case"Enter":m(e);break;case"ArrowRight":{const a=p.indexOf(e.currentTarget)+1;t=p[a]??p[0];break}case"ArrowLeft":{const a=p.indexOf(e.currentTarget)-1;t=p[a]??p[p.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},u.map((e=>{let{value:t,label:a,attributes:i}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>p.push(e),onKeyDown:c,onClick:m},i,{className:(0,l.Z)("tabs__item",N.tabItem,i?.className,{"tabs__item--active":o===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=b(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",N.tabList)},r.createElement(h,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function v(e){const t=(0,f.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},8180:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>u});var n=a(7462),r=(a(7294),a(3905));a(4866),a(5162);const l={},i="node",o={unversionedId:"nethermind-utilities/cli/node",id:"nethermind-utilities/cli/node",title:"node",description:"node.address",source:"@site/docs/06-nethermind-utilities/cli/node.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/node",permalink:"/docs/nethermind-utilities/cli/node",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/node.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"net",permalink:"/docs/nethermind-utilities/cli/net"},next:{title:"parity",permalink:"/docs/nethermind-utilities/cli/parity"}},d={},u=[{value:"node.address",id:"nodeaddress",level:2},{value:"node.enode",id:"nodeenode",level:2},{value:"node.setNodeKey",id:"nodesetnodekey",level:2},{value:"node.switch",id:"nodeswitch",level:2},{value:"node.switchLocal",id:"nodeswitchlocal",level:2},{value:"node.uri",id:"nodeuri",level:2}],p={toc:u},s="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(s,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"node"},"node"),(0,r.kt)("h2",{id:"nodeaddress"},"node.address"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"node.address"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of node.address"',title:'"Example',request:!0,of:!0,'node.address"':!0},"node.address\n")),(0,r.kt)("h2",{id:"nodeenode"},"node.enode"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"node.enode"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of node.enode"',title:'"Example',request:!0,of:!0,'node.enode"':!0},"node.enode\n")),(0,r.kt)("h2",{id:"nodesetnodekey"},"node.setNodeKey"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"node.setNodeKey(key)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"key"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of node.setNodeKey"',title:'"Example',request:!0,of:!0,'node.setNodeKey"':!0},"node.setNodeKey(key)\n")),(0,r.kt)("h2",{id:"nodeswitch"},"node.switch"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"node.switch(uri)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"uri"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of node.switch"',title:'"Example',request:!0,of:!0,'node.switch"':!0},"node.switch(uri)\n")),(0,r.kt)("h2",{id:"nodeswitchlocal"},"node.switchLocal"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"node.switchLocal(uri)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"uri"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of node.switchLocal"',title:'"Example',request:!0,of:!0,'node.switchLocal"':!0},"node.switchLocal(uri)\n")),(0,r.kt)("h2",{id:"nodeuri"},"node.uri"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"node.uri"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"JavaScript Object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of node.uri"',title:'"Example',request:!0,of:!0,'node.uri"':!0},"node.uri\n")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f07817a9.7a470662.js b/assets/js/f07817a9.7a470662.js new file mode 100644 index 000000000..5b6f216e2 --- /dev/null +++ b/assets/js/f07817a9.7a470662.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1076],{3905:(t,e,a)=>{a.d(e,{Zo:()=>p,kt:()=>c});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function o(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var N=n.createContext({}),d=function(t){var e=n.useContext(N),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},p=function(t){var e=d(t.components);return n.createElement(N.Provider,{value:e},t.children)},f="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,N=t.parentName,p=o(t,["components","mdxType","originalType","parentName"]),f=d(a),m=r,c=f["".concat(N,".").concat(m)]||f[m]||s[m]||l;return a?n.createElement(c,i(i({ref:e},p),{},{components:a})):n.createElement(c,i({ref:e},p))}));function c(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=m;var o={};for(var N in e)hasOwnProperty.call(e,N)&&(o[N]=e[N]);o.originalType=t,o[f]="string"==typeof t?t:r,i[1]=o;for(var d=2;d<l;d++)i[d]=a[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},9694:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>N,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>o,toc:()=>d});var n=a(7462),r=(a(7294),a(3905));const l={},i="Init",o={unversionedId:"fundamentals/configuration/init",id:"fundamentals/configuration/init",title:"Init",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/init.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/init",permalink:"/docs/fundamentals/configuration/init",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/init.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Hive",permalink:"/docs/fundamentals/configuration/hive"},next:{title:"JsonRpc",permalink:"/docs/fundamentals/configuration/jsonrpc"}},N={},d=[],p={toc:d},f="wrapper";function s(t){let{components:e,...a}=t;return(0,r.kt)(f,(0,n.Z)({},p,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"init"},"Init"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"AutoDump"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_AUTODUMP"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Auto dump on bad blocks for diagnostics, Possible values ","[None, Receipts, Parity, Geth, All]"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Receipts")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BaseDbPath"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_BASEDBPATH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Base directory path for all the nethermind databases."),(0,r.kt)("td",{parentName:"tr",align:"left"},'"db"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ChainSpecPath"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_CHAINSPECPATH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Path to the chain definition file (Parity chainspec or Geth genesis file)."),(0,r.kt)("td",{parentName:"tr",align:"left"},"chainspec/foundation.json")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DiagnosticMode"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_DIAGNOSTICMODE"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Diagnostics modes"),(0,r.kt)("td",{parentName:"tr",align:"left"},"None")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"DiscoveryEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_DISCOVERYENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'false' then the node does not try to find nodes beyond the bootnodes configured."),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"EnableUnsecuredDevWallet"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'true' then it enables the wallet / key store in the application."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"GenesisHash"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_GENESISHASH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Hash of the genesis block - if the default null value is left then the genesis block validity will not be checked which is useful for ad hoc test/private networks."),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"HiveChainSpecPath"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_HIVECHAINSPECPATH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Path to the chain definition file created by Hive for test purpouse"),(0,r.kt)("td",{parentName:"tr",align:"left"},"chainspec/test.json")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"IsMining"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_ISMINING"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'true' then the node will try to seal/mine new blocks"),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"KeepDevWalletInMemory"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'true' then any accounts created will be only valid during the session and deleted when application closes."),(0,r.kt)("td",{parentName:"tr",align:"left"},"false")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"KzgSetupPath"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_KZGSETUPPATH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Kzg trusted setup file path"),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogDirectory"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_LOGDIRECTORY"),(0,r.kt)("td",{parentName:"tr",align:"left"},"In case of null, the path is set to ","[applicationDirectiory]","\\logs"),(0,r.kt)("td",{parentName:"tr",align:"left"},"logs")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogFileName"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_LOGFILENAME"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Name of the log file generated (useful when launching multiple networks with the same log folder)."),(0,r.kt)("td",{parentName:"tr",align:"left"},'"log.txt"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"LogRules"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_LOGRULES"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Overrides for default logs in format LogPath:LogLevel;*"),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"MemoryHint"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_MEMORYHINT"),(0,r.kt)("td",{parentName:"tr",align:"left"},"A hint for the max memory that will allow us to configure the DB and Netty memory allocations."),(0,r.kt)("td",{parentName:"tr",align:"left"},"null")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"PeerManagerEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_PEERMANAGERENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'false' then the node does not connect to newly discovered peers.."),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"ProcessingEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_PROCESSINGENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"If 'false' then the node does not download/process new blocks.."),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"RpcDbUrl"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_RPCDBURL"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Url for remote node that will be used as DB source when 'DiagnosticMode' is set to'RpcDb'"),(0,r.kt)("td",{parentName:"tr",align:"left"})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"StaticNodesPath"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_STATICNODESPATH"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Path to the file with a list of static nodes."),(0,r.kt)("td",{parentName:"tr",align:"left"},'"Data/static-nodes.json"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"WebSocketsEnabled"),(0,r.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_INITCONFIG_WEBSOCKETSENABLED"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Defines whether the WebSockets service is enabled on node startup at the 'HttpPort' - e.g. ws://localhost:8545/ws/json-rpc"),(0,r.kt)("td",{parentName:"tr",align:"left"},"true")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f342b8d6.cfd9c11c.js b/assets/js/f342b8d6.cfd9c11c.js new file mode 100644 index 000000000..0dfe6a0ec --- /dev/null +++ b/assets/js/f342b8d6.cfd9c11c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1542],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),s=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,u=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(n),p=a,h=d["".concat(u,".").concat(p)]||d[p]||m[p]||i;return n?r.createElement(h,l(l({ref:t},c),{},{components:n})):r.createElement(h,l({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=p;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[d]="string"==typeof e?e:a,l[1]=o;for(var s=2;s<i;s++)l[s]=n[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},5162:(e,t,n)=>{n.d(t,{Z:()=>l});var r=n(7294),a=n(6010);const i={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:n,className:l}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(i.tabItem,l),hidden:n},t)}},4866:(e,t,n)=>{n.d(t,{Z:()=>w});var r=n(7462),a=n(7294),i=n(6010),l=n(2466),o=n(6550),u=n(1980),s=n(7392),c=n(12);function d(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:a}}=e;return{value:t,label:n,attributes:r,default:a}}))}function m(e){const{values:t,children:n}=e;return(0,a.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,s.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:n}=e;const r=(0,o.k6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,u._X)(i),(0,a.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(r.location.search);t.set(i,e),r.replace({...r.location,search:t.toString()})}),[i,r])]}function f(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,i=m(e),[l,o]=(0,a.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[u,s]=h({queryString:n,groupId:r}),[d,f]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,i]=(0,c.Nk)(n);return[r,(0,a.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:r}),b=(()=>{const e=u??d;return p({value:e,tabValues:i})?e:null})();(0,a.useLayoutEffect)((()=>{b&&o(b)}),[b]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),s(e),f(e)}),[s,f,i]),tabValues:i}}var b=n(2389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function y(e){let{className:t,block:n,selectedValue:o,selectValue:u,tabValues:s}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,l.o5)(),m=e=>{const t=e.currentTarget,n=c.indexOf(t),r=s[n].value;r!==o&&(d(t),u(r))},p=e=>{let t=null;switch(e.key){case"Enter":m(e);break;case"ArrowRight":{const n=c.indexOf(e.currentTarget)+1;t=c[n]??c[0];break}case"ArrowLeft":{const n=c.indexOf(e.currentTarget)-1;t=c[n]??c[c.length-1];break}}t?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},t)},s.map((e=>{let{value:t,label:n,attributes:l}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>c.push(e),onKeyDown:p,onClick:m},l,{className:(0,i.Z)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":o===t})}),n??t)})))}function k(e){let{lazy:t,children:n,selectedValue:r}=e;const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=i.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},i.map(((e,t)=>(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function v(e){const t=f(e);return a.createElement("div",{className:(0,i.Z)("tabs-container",g.tabList)},a.createElement(y,(0,r.Z)({},e,t)),a.createElement(k,(0,r.Z)({},e,t)))}function w(e){const t=(0,b.Z)();return a.createElement(v,(0,r.Z)({key:String(t)},e))}},2647:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var r=n(7462),a=(n(7294),n(3905)),i=n(4866),l=n(5162);const o={},u="Running the client",s={unversionedId:"fundamentals/running-nethermind/running-the-client",id:"fundamentals/running-nethermind/running-the-client",title:"Running the client",description:"To get the latest Nethermind version,",source:"@site/docs/02-fundamentals/01-running-nethermind/running-the-client.md",sourceDirName:"02-fundamentals/01-running-nethermind",slug:"/fundamentals/running-nethermind/running-the-client",permalink:"/docs/fundamentals/running-nethermind/running-the-client",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/01-running-nethermind/running-the-client.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Fundamentals",permalink:"/docs/category/fundamentals"},next:{title:"Runtime",permalink:"/docs/fundamentals/running-nethermind/runtime"}},c={},d=[{value:"Running directly",id:"running-directly",level:2},{value:"Running with the launcher",id:"running-with-the-launcher",level:2}],m={toc:d},p="wrapper";function h(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"running-the-client"},"Running the client"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"To get the latest Nethermind version,\nsee ",(0,a.kt)("a",{parentName:"p",href:"/docs/getting-started/installing-nethermind"},"How to install"),".")),(0,a.kt)("h2",{id:"running-directly"},"Running directly"),(0,a.kt)("p",null,"For advanced users, running the Nethermind client directly is the best option as it gives complete control over the\nconfiguration parameters."),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(l.Z,{value:"linux",label:"Linux",mdxType:"TabItem"},(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The executable name depends on the installation source. If installed with PPA, it's ",(0,a.kt)("inlineCode",{parentName:"p"},"nethermind"),". Otherwise,\nit's ",(0,a.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner"),".")),(0,a.kt)("p",null,"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Runner -c mainnet -dd path/to/data/dir\n"))),(0,a.kt)(l.Z,{value:"windows",label:"Windows",mdxType:"TabItem"},(0,a.kt)("p",null,"To launch the client with the default configuration for the Mainnet and custom data directory, run:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"./Nethermind.Runner.exe -c mainnet -dd path/to/data/dir\n"))),(0,a.kt)(l.Z,{value:"macOs",label:"MacOS",mdxType:"TabItem"},(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The executable name depends on the installation source. If installed with Homebrew, it's ",(0,a.kt)("inlineCode",{parentName:"p"},"nethermind"),". Otherwise,\nit's ",(0,a.kt)("inlineCode",{parentName:"p"},"Nethermind.Runner"),".")),(0,a.kt)("p",null,"For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Runner -c mainnet -dd path/to/data/dir\n")))),(0,a.kt)("p",null,"For available configuration options, see ",(0,a.kt)("a",{parentName:"p",href:"/docs/fundamentals/configuration/"},"Configuration"),"."),(0,a.kt)("h2",{id:"running-with-the-launcher"},"Running with the launcher"),(0,a.kt)("p",null,"For rookies, the launcher is the easiest way to begin by just following a few simple steps."),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(l.Z,{value:"linux",label:"Linux",mdxType:"TabItem"},(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The executable name depends on the installation source. If installed with PPA, it's ",(0,a.kt)("inlineCode",{parentName:"p"},"nethermind"),". Otherwise,\nit's ",(0,a.kt)("inlineCode",{parentName:"p"},"Nethermind.Launcher"),".")),(0,a.kt)("p",null,"Run the launcher as follows:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Launcher\n"))),(0,a.kt)(l.Z,{value:"windows",label:"Windows",mdxType:"TabItem"},(0,a.kt)("p",null,"Run the launcher as follows:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-powershell"},"./Nethermind.Launcher.exe\n"))),(0,a.kt)(l.Z,{value:"macOs",label:"MacOS",mdxType:"TabItem"},(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"The executable name depends on the installation source. If installed with Homebrew, it's ",(0,a.kt)("inlineCode",{parentName:"p"},"nethermind-launcher"),".\nOtherwise, it's ",(0,a.kt)("inlineCode",{parentName:"p"},"Nethermind.Launcher"),".")),(0,a.kt)("p",null,"Run the launcher as follows:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"./Nethermind.Launcher\n")))),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"To run a node, select ",(0,a.kt)("inlineCode",{parentName:"li"},"Ethereum Node")),(0,a.kt)("li",{parentName:"ol"},"Then, select the desired ",(0,a.kt)("a",{parentName:"li",href:"/docs/getting-started/networks"},"network")," (Mainnet, Sepolia, Goerli)"),(0,a.kt)("li",{parentName:"ol"},"Then, select the ",(0,a.kt)("a",{parentName:"li",href:"/docs/fundamentals/sync-modes"},"sync mode")," and you're ready to go")),(0,a.kt)("p",null,"If you need just the Nethermind command line interface (CLI), select ",(0,a.kt)("inlineCode",{parentName:"p"},"CLI")," in the first step."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f44497bc.fb3fe7db.js b/assets/js/f44497bc.fb3fe7db.js new file mode 100644 index 000000000..14696af00 --- /dev/null +++ b/assets/js/f44497bc.fb3fe7db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6070],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),c=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,p=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=c(a),m=r,b=s["".concat(p,".").concat(m)]||s[m]||d[m]||l;return a?n.createElement(b,o(o({ref:t},u),{},{components:a})):n.createElement(b,o({ref:t},u))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,o=new Array(l);o[0]=m;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i[s]="string"==typeof e?e:r,o[1]=i;for(var c=2;c<l;c++)o[c]=a[c];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>o});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:a,className:o}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,o),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>x});var n=a(7462),r=a(7294),l=a(6010),o=a(2466),i=a(6550),p=a(1980),c=a(7392),u=a(12);function s(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function d(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??s(a);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:a}=e;const n=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,p._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function f(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=d(e),[o,i]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[p,c]=b({queryString:a,groupId:n}),[s,f]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,u.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),k=(()=>{const e=p??s;return m({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{k&&i(k)}),[k]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),c(e),f(e)}),[c,f,l]),tabValues:l}}var k=a(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function N(e){let{className:t,block:a,selectedValue:i,selectValue:p,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:s}=(0,o.o5)(),d=e=>{const t=e.currentTarget,a=u.indexOf(t),n=c[a].value;n!==i&&(s(t),p(n))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const a=u.indexOf(e.currentTarget)+1;t=u[a]??u[0];break}case"ArrowLeft":{const a=u.indexOf(e.currentTarget)-1;t=u[a]??u[u.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},c.map((e=>{let{value:t,label:a,attributes:o}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>u.push(e),onKeyDown:m,onClick:d},o,{className:(0,l.Z)("tabs__item",h.tabItem,o?.className,{"tabs__item--active":i===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=f(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",h.tabList)},r.createElement(N,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function x(e){const t=(0,k.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},227:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>p,default:()=>b,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),o=a(5162);const i={},p="txpool",c={unversionedId:"nethermind-utilities/cli/txpool",id:"nethermind-utilities/cli/txpool",title:"txpool",description:"txpool.content",source:"@site/docs/06-nethermind-utilities/cli/txpool.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/txpool",permalink:"/docs/nethermind-utilities/cli/txpool",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/txpool.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"trace",permalink:"/docs/nethermind-utilities/cli/trace"},next:{title:"web3",permalink:"/docs/nethermind-utilities/cli/web3"}},u={},s=[{value:"txpool.content",id:"txpoolcontent",level:2},{value:"txpool.inspect",id:"txpoolinspect",level:2},{value:"txpool.status",id:"txpoolstatus",level:2}],d={toc:s},m="wrapper";function b(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"txpool"},"txpool"),(0,r.kt)("h2",{id:"txpoolcontent"},"txpool.content"),(0,r.kt)("p",null,"Returns tx pool content."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"txpool.content"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxPoolContent object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"txpool.content\n"))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "0x0f990ef7ec160f01af7148b74cc8a86fe46c551e": { "153": { "hash": "0x84f6f2e5d24b9a0c25bd7018adbbf4388b2c07842782f73d5ddc389906d5f2c8","nonce": "0x99","blockHash": null,"blockNumber": null,"transactionIndex": null,"from": "0x0f990ef7ec160f01af7148b74cc8a86fe46c551e","to": "0x1b4e4664de1d57b665b4bf3523cbccf007766de3","value": "0xc8","gasPrice": "0x3b9aca08","gas": "0x1c9c37f","data": "0xaeeb89600000000000000000000000000000000000000000000000000000000000000001","input": "0xaeeb89600000000000000000000000000000000000000000000000000000000000000001","type": "0x0","v": "0x2c","s": "0x20158ce3f4f9c65f8c657c0d91bbfb43632b2951f6192bca8fb3a25c26dd81d5","r": "0x2814d998f2a78dd4f37461485d88158a32ef5dcfa8c57e224b3ea77536df01b1" } } }\n'))),(0,r.kt)(o.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxPoolContent")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Pending"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Queued"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/txpool#txpool_content"},"See also JSON RPC txpool_content")),(0,r.kt)("h2",{id:"txpoolinspect"},"txpool.inspect"),(0,r.kt)("p",null,"Returns a detailed info on tx pool transactions."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"txpool.inspect"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxPoolInspection object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"txpool.inspect\n"))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "0xb49928fcb10123e451cfe63aa47edcaea0f8aeea": { "20": "0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6721975 \xd7 140000000000 gas","21": "0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6721975 \xd7 140000000000 gas","22": "0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6721975 \xd7 140000000000 gas","23": "0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6700000 \xd7 140000000000 gas","24": "0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6700000 \xd7 140000000000 gas","27": "0xb49928fcb10123e451cfe63aa47edcaea0f8aeea: 0 wei + 6700000 \xd7 140000000000 gas" },"0xc51db3339a7603f70b347a0b9680554f777d1f3c": { "82": "0xc51db3339a7603f70b347a0b9680554f777d1f3c: 0 wei + 4500000 \xd7 10000000000 gas" },"0x084dd4aefc6853253573fee9f5fcc23e849d164c": { "17": "0x084dd4aefc6853253573fee9f5fcc23e849d164c: 0 wei + 28472169 \xd7 1000000008 gas" } }\n'))),(0,r.kt)(o.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxPoolInspection")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Pending"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Queued"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Array"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/txpool#txpool_inspect"},"See also JSON RPC txpool_inspect")),(0,r.kt)("h2",{id:"txpoolstatus"},"txpool.status"),(0,r.kt)("p",null,"Returns a tx pool status."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"txpool.status"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"TxPoolStatus object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"request",label:"Request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"txpool.status\n"))),(0,r.kt)(o.Z,{value:"response",label:"Response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'{ "pending": 1010,"queued": 14 }\n'))),(0,r.kt)(o.Z,{value:"objects",label:"Object",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"TxPoolStatus")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Field name"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Pending"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Queued"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Quantity"))))))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/txpool#txpool_status"},"See also JSON RPC txpool_status")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f496bf89.0cfe1013.js b/assets/js/f496bf89.0cfe1013.js new file mode 100644 index 000000000..a8a55a166 --- /dev/null +++ b/assets/js/f496bf89.0cfe1013.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1285],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,s=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),c=u(a),d=n,f=c["".concat(s,".").concat(d)]||c[d]||p[d]||l;return a?r.createElement(f,i(i({ref:t},m),{},{components:a})):r.createElement(f,i({ref:t},m))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=d;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,i[1]=o;for(var u=2;u<l;u++)i[u]=a[u];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>i});var r=a(7294),n=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:a,className:i}=e;return r.createElement("div",{role:"tabpanel",className:(0,n.Z)(l.tabItem,i),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>v});var r=a(7462),n=a(7294),l=a(6010),i=a(2466),o=a(6550),s=a(1980),u=a(7392),m=a(12);function c(e){return function(e){return n.Children.map(e,(e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:r,default:n}}=e;return{value:t,label:a,attributes:r,default:n}}))}function p(e){const{values:t,children:a}=e;return(0,n.useMemo)((()=>{const e=t??c(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function d(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:a}=e;const r=(0,o.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,s._X)(l),(0,n.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(r.location.search);t.set(l,e),r.replace({...r.location,search:t.toString()})}),[l,r])]}function b(e){const{defaultValue:t,queryString:a=!1,groupId:r}=e,l=p(e),[i,o]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!d({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=a.find((e=>e.default))??a[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:l}))),[s,u]=f({queryString:a,groupId:r}),[c,b]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,l]=(0,m.Nk)(a);return[r,(0,n.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:r}),y=(()=>{const e=s??c;return d({value:e,tabValues:l})?e:null})();(0,n.useLayoutEffect)((()=>{y&&o(y)}),[y]);return{selectedValue:i,selectValue:(0,n.useCallback)((e=>{if(!d({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),b(e)}),[u,b,l]),tabValues:l}}var y=a(2389);const k={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){let{className:t,block:a,selectedValue:o,selectValue:s,tabValues:u}=e;const m=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.o5)(),p=e=>{const t=e.currentTarget,a=m.indexOf(t),r=u[a].value;r!==o&&(c(t),s(r))},d=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const a=m.indexOf(e.currentTarget)+1;t=m[a]??m[0];break}case"ArrowLeft":{const a=m.indexOf(e.currentTarget)-1;t=m[a]??m[m.length-1];break}}t?.focus()};return n.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},u.map((e=>{let{value:t,label:a,attributes:i}=e;return n.createElement("li",(0,r.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>m.push(e),onKeyDown:d,onClick:p},i,{className:(0,l.Z)("tabs__item",k.tabItem,i?.className,{"tabs__item--active":o===t})}),a??t)})))}function h(e){let{lazy:t,children:a,selectedValue:r}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===r));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return n.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function N(e){const t=b(e);return n.createElement("div",{className:(0,l.Z)("tabs-container",k.tabList)},n.createElement(g,(0,r.Z)({},e,t)),n.createElement(h,(0,r.Z)({},e,t)))}function v(e){const t=(0,y.Z)();return n.createElement(N,(0,r.Z)({key:String(t)},e))}},9176:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>o,toc:()=>u});var r=a(7462),n=(a(7294),a(3905));a(4866),a(5162);const l={},i="system",o={unversionedId:"nethermind-utilities/cli/system",id:"nethermind-utilities/cli/system",title:"system",description:"system.getVariable",source:"@site/docs/06-nethermind-utilities/cli/system.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/system",permalink:"/docs/nethermind-utilities/cli/system",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/system.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"proof",permalink:"/docs/nethermind-utilities/cli/proof"},next:{title:"trace",permalink:"/docs/nethermind-utilities/cli/trace"}},s={},u=[{value:"system.getVariable",id:"systemgetvariable",level:2},{value:"system.memory",id:"systemmemory",level:2}],m={toc:u},c="wrapper";function p(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"system"},"system"),(0,n.kt)("h2",{id:"systemgetvariable"},"system.getVariable"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"system.getVariable(name, defaultValue)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"name"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"defaultValue"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of system.getVariable"',title:'"Example',request:!0,of:!0,'system.getVariable"':!0},"system.getVariable(name, defaultValue)\n")),(0,n.kt)("h2",{id:"systemmemory"},"system.memory"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"system.memory(name, defaultValue)"))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"name"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String")),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"defaultValue"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("inlineCode",{parentName:"td"},"String")),(0,n.kt)("td",{parentName:"tr",align:"left"})))),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of system.memory"',title:'"Example',request:!0,of:!0,'system.memory"':!0},"system.memory(name, defaultValue)\n")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f4c3a4a0.858afca7.js b/assets/js/f4c3a4a0.858afca7.js new file mode 100644 index 000000000..57d4f6050 --- /dev/null +++ b/assets/js/f4c3a4a0.858afca7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[915],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(7294);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(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<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,s=function(e,t){if(null==e)return{};var n,a,s={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}var l=a.createContext({}),d=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=d(e.components);return a.createElement(l.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,s=e.mdxType,r=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),h=d(n),u=s,m=h["".concat(l,".").concat(u)]||h[u]||p[u]||r;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,s=t&&t.mdxType;if("string"==typeof e||s){var r=n.length,o=new Array(r);o[0]=u;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[h]="string"==typeof e?e:s,o[1]=i;for(var d=2;d<r;d++)o[d]=n[d];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},3057:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var a=n(7462),s=(n(7294),n(3905));const r={},o="Sync modes",i={unversionedId:"fundamentals/sync-modes",id:"fundamentals/sync-modes",title:"Sync modes",description:"There are three main synchronization modes",source:"@site/docs/02-fundamentals/03-sync-modes.md",sourceDirName:"02-fundamentals",slug:"/fundamentals/sync-modes",permalink:"/docs/fundamentals/sync-modes",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/03-sync-modes.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Runtime",permalink:"/docs/fundamentals/running-nethermind/runtime"},next:{title:"Configuration",permalink:"/docs/fundamentals/configuration/"}},l={},d=[{value:"There are three main synchronization modes",id:"there-are-three-main-synchronization-modes",level:2},{value:"Snap Sync",id:"snap-sync",level:2},{value:"How to Enable",id:"how-to-enable",level:4},{value:"Snap Sync vs Other Sync Modes",id:"snap-sync-vs-other-sync-modes",level:4},{value:"Current limitations and future development",id:"current-limitations-and-future-development",level:4},{value:"Fast Sync",id:"fast-sync",level:2},{value:"Archive Sync",id:"archive-sync",level:2}],c={toc:d},h="wrapper";function p(e){let{components:t,...r}=e;return(0,s.kt)(h,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"sync-modes"},"Sync modes"),(0,s.kt)("h2",{id:"there-are-three-main-synchronization-modes"},"There are three main synchronization modes"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"snap sync",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"the fastest way to sync to the network (syncs to mainnet in ","~","3 hours)"),(0,s.kt)("li",{parentName:"ul"},"downloads only the latest state, headers, and optionally bodies and receipts"))),(0,s.kt)("li",{parentName:"ul"},"fast sync",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"slower than snap sync"),(0,s.kt)("li",{parentName:"ul"},"useful on nethermind-only chains (like Gnosis), where snap sync is not available for now"),(0,s.kt)("li",{parentName:"ul"},"downloads only the latest state, headers, and optionally bodies and receipts"))),(0,s.kt)("li",{parentName:"ul"},"archive sync",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"heavy historical sync verifying all the transactions and keeping all the historical state"),(0,s.kt)("li",{parentName:"ul"},"you can run it like this ",(0,s.kt)("inlineCode",{parentName:"li"},"./Nethermind.Runner --config mainnet_archive"))))),(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Sync Mode"),(0,s.kt)("th",{parentName:"tr",align:null},"Disk Space needed"),(0,s.kt)("th",{parentName:"tr",align:null},"Full current state"),(0,s.kt)("th",{parentName:"tr",align:null},"Full current and all historical states"),(0,s.kt)("th",{parentName:"tr",align:null},"Can sync a full archive node from this"),(0,s.kt)("th",{parentName:"tr",align:null},"Time to sync"),(0,s.kt)("th",{parentName:"tr",align:null},"Time to RPC"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"archive"),(0,s.kt)("td",{parentName:"tr",align:null},"~","12TB"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"~","3 weeks"),(0,s.kt)("td",{parentName:"tr",align:null},"~","3 weeks")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"snap/fast sync with all bodies and receipts"),(0,s.kt)("td",{parentName:"tr",align:null},"~","800GB"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"NO"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"~","20 hours"),(0,s.kt)("td",{parentName:"tr",align:null},"~","20 hours")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"default snap/fast sync (with barriers set to support Eth2)"),(0,s.kt)("td",{parentName:"tr",align:null},"~","500GB"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"NO"),(0,s.kt)("td",{parentName:"tr",align:null},"NO"),(0,s.kt)("td",{parentName:"tr",align:null},"~","11 hours"),(0,s.kt)("td",{parentName:"tr",align:null},"~","11 hours")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"snap/fast sync without receipts"),(0,s.kt)("td",{parentName:"tr",align:null},"~","450GB"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"NO"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"~","12 hours"),(0,s.kt)("td",{parentName:"tr",align:null},"~","12 hours")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"snap/fast sync without bodies and receipts"),(0,s.kt)("td",{parentName:"tr",align:null},"~","200GB"),(0,s.kt)("td",{parentName:"tr",align:null},"YES"),(0,s.kt)("td",{parentName:"tr",align:null},"NO"),(0,s.kt)("td",{parentName:"tr",align:null},"NO"),(0,s.kt)("td",{parentName:"tr",align:null},"~","9 hours"),(0,s.kt)("td",{parentName:"tr",align:null},"~","9 hours")))),(0,s.kt)("h2",{id:"snap-sync"},"Snap Sync"),(0,s.kt)("p",null,"Snap sync allows a node to perform the initial synchronization and download of Ethereum\u2019s state up to 10 times faster\nthan using fast sync."),(0,s.kt)("h4",{id:"how-to-enable"},"How to Enable"),(0,s.kt)("p",null,"Snap sync is enabled by default for majority of networks. To make sure, check if",(0,s.kt)("inlineCode",{parentName:"p"},"SnapSync")," is set to ",(0,s.kt)("inlineCode",{parentName:"p"},"true")," in the Sync\nmodule of your ",(0,s.kt)("inlineCode",{parentName:"p"},".cfg")," file"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},'"Sync": {\n "SnapSync": true\n}\n')),(0,s.kt)("blockquote",null,(0,s.kt)("p",{parentName:"blockquote"},(0,s.kt)("strong",{parentName:"p"},"IMPORTANT"),": Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first\ntime."),(0,s.kt)("p",{parentName:"blockquote"},(0,s.kt)("strong",{parentName:"p"},"IMPORTANT"),": Do not remove other configurations from Sync module. Just add ",(0,s.kt)("inlineCode",{parentName:"p"},'"SnapSync": true'),", e.g."),(0,s.kt)("pre",{parentName:"blockquote"},(0,s.kt)("code",{parentName:"pre"},'"Sync": {\n "SnapSync": true,\n "PivotNumber": 15011000,\n "PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",\n "PivotTotalDifficulty": "52367203434576253689712",\n "FastBlocks": true\n}\n'))),(0,s.kt)("h4",{id:"snap-sync-vs-other-sync-modes"},"Snap Sync vs Other Sync Modes"),(0,s.kt)("p",null,"More than 12TB of storage is needed today to run a full archive node \u2014 one that stores all the state since genesis.\nBecause of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on\nthe fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of\nabout 30GB."),(0,s.kt)("p",null,"This reduction in sync time and download size has to do with the specific way in which Ethereum\u2019s state is stored in a\nnode: Merkle trees."),(0,s.kt)("p",null,(0,s.kt)("img",{src:n(3192).Z,width:"1168",height:"939"})),(0,s.kt)("p",null,"With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the\nleaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time\nand packets downloaded."),(0,s.kt)("h4",{id:"current-limitations-and-future-development"},"Current limitations and future development"),(0,s.kt)("p",null,"For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap\nserving development is in progress, expected late 2023/early 2024."),(0,s.kt)("p",null,"The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be\nsynced using that method: Mainnet, Goerli, Sepolia."),(0,s.kt)("h2",{id:"fast-sync"},"Fast Sync"),(0,s.kt)("p",null,"After completing the fast sync your node will have the ability to answer questions like ",(0,s.kt)("em",{parentName:"p"},"'what is my account\nbalance ",(0,s.kt)("strong",{parentName:"em"},"now"),"'"),", ",(0,s.kt)("em",{parentName:"p"},"'how many XYZ tokens SomeExchange holds ",(0,s.kt)("strong",{parentName:"em"},"at the moment"),"'"),"."),(0,s.kt)("p",null,"Fast sync has multiple stages. Nethermind uses a ",(0,s.kt)("inlineCode",{parentName:"p"},"pivot block")," number to improve fast sync performance.\nThe ",(0,s.kt)("inlineCode",{parentName:"p"},"pivot block")," data is automatically updated after initialization of the client and consists of\nthe ",(0,s.kt)("inlineCode",{parentName:"p"},"block number"),", ",(0,s.kt)("inlineCode",{parentName:"p"},"block hash")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"block total difficulty")," (please note that ",(0,s.kt)("inlineCode",{parentName:"p"},"total difficulty")," is different\nthan ",(0,s.kt)("inlineCode",{parentName:"p"},"difficulty"),"). Before synchronizing state data Nethermind synchronizes in two directions - backwards\nfrom ",(0,s.kt)("inlineCode",{parentName:"p"},"pivot block")," to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync\nmight be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented\nauto-update."),(0,s.kt)("p",null,"After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are\nproviding an estimate for the download size and progress but the real value may be different than the estimate (\nespecially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our\nobservations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ","~","100%\nfinished. The other important component is the speed of your sync - if your IO / network / file system causes the state\nsync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie\nover and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that\nyou downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then\nvery likely your setup cannot catch up with the chain progress."),(0,s.kt)("p",null,"After the state sync finishes you will see the ",(0,s.kt)("em",{parentName:"p"},"'Processed...'")," messages like in archive sync - it means that your node\nis in sync and is processing the latest blocks."),(0,s.kt)("p",null,"Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then\nsyncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40\nminutes."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Fast sync logs example for mainnet.",src:n(4705).Z,width:"1920",height:"1030"})),(0,s.kt)("p",null,"State sync log messages have multiple values displayed. First ",(0,s.kt)("inlineCode",{parentName:"p"},"dd.HH:mm:ss")," total state sync time is displayed, followed\nby an estimated sync progress (percentage of total database data synced), then the current download speed is displayed (\nthere will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In\ngeneral 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You\ncan calculate it in the example as ","~","45GB / (2MB/s) ","~"," 22500 seconds ","~","6.25 hours. We also display the number of state\naccounts synced, number of trie nodes synced and a diagnostic message in the format of ",(0,s.kt)("em",{parentName:"p"},"[","number","_","of","_","pending","_","requests]\n.","[","average time spent in response handler displayed as milliseconds]"),". So ",(0,s.kt)("inlineCode",{parentName:"p"},"5.6.20ms")," means that we are awaiting for\nresponses to 5 requests that have been sent to peers and the average time it takes us to process a single response is\n6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be\nsignificantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database\nIO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below\n15ms (but they may be as high as 700ms for a while after restarting the node)."),(0,s.kt)("p",null,"A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to\nrebuild the caches by reading millions of values from the database."),(0,s.kt)("p",null,"At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block\nnumber to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more\nthen it is possible that you will not be able to catch up with the network progress."),(0,s.kt)("p",null,"One of the best indicators that you are close to be synced is combined ","~","100% state size progress and nearly 100% branch\nsync progress."),(0,s.kt)("p",null,(0,s.kt)("img",{src:n(8950).Z,width:"1920",height:"1030"})),(0,s.kt)("p",null,(0,s.kt)("img",{src:n(2794).Z,width:"1895",height:"795"})),(0,s.kt)("h2",{id:"archive-sync"},"Archive Sync"),(0,s.kt)("p",null,"Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like ",(0,s.kt)("em",{parentName:"p"},"'what was the balance of my\naccount 2 years ago?'"),", ",(0,s.kt)("em",{parentName:"p"},"'how many XYZ token were held in SomeExchange custody in 2017?'"),"."),(0,s.kt)("p",null,"We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the\narchive options) or by simply loading appropriate config when launching ",(0,s.kt)("inlineCode",{parentName:"p"},"./Nethermind.Runner --config mainnet_archive")),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"./Nethermind.Runner --config goerli_archive")),(0,s.kt)("p",null,"While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 -\n6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS).\nDatabase size in archive sync is the biggest from all modes as you will store all the historical data."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Example of the archive sync logs",src:n(4690).Z,width:"1920",height:"1030"})),(0,s.kt)("p",null,(0,s.kt)("img",{src:n(9301).Z,width:"1920",height:"1030"})),(0,s.kt)("p",null,"Explanation of some data in the logs:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"at the beginning you may see a ",(0,s.kt)("em",{parentName:"li"},"'Waiting for peers...'")," message while the node is trying to discover nodes that it can\nsync with."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("em",{parentName:"li"},"'Downloaded 1234/8000000'")," shows the number of unprocessed blocks (with transactions) downloaded from the network.\nFor ",(0,s.kt)("inlineCode",{parentName:"li"},"mainnet"),"this value may be slower than processing at first but very quickly you will see blocks being downloaded\nmuch faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full\nblocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated\nin the last second) and average (total) speed since starting the node."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("em",{parentName:"li"},"'Processed ...'")," displays the blocks that have been processed by the EVM. The first number shows the current head\nblock number, then you can see ",(0,s.kt)("inlineCode",{parentName:"li"},"mgasps")," (million gas per second) - current and total, then ",(0,s.kt)("inlineCode",{parentName:"li"},"tps")," (transactions per\nsecond) - current and total, ",(0,s.kt)("inlineCode",{parentName:"li"},"bps")," (blocks per second). Then ",(0,s.kt)("inlineCode",{parentName:"li"},"recv queue")," (transactions signature public key recovery\nqueue), ",(0,s.kt)("inlineCode",{parentName:"li"},"proc queue")," (processor queue). Both recovery queue and processor queue are designed so when too many blocks\nare waiting for processing then only their hashes are kept in memory and remaining data are stored in the database.\nThus, the queues numbers that you can see will be capped by some number."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("em",{parentName:"li"},"'Cache for epoch...'")," informs about ",(0,s.kt)("inlineCode",{parentName:"li"},"ethash")," cache needed for block seal verification (only on ",(0,s.kt)("inlineCode",{parentName:"li"},"mainnet"),"\nand ",(0,s.kt)("inlineCode",{parentName:"li"},"ropsten"),"). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the\nlatest blocks that are being broadcast on the network."),(0,s.kt)("li",{parentName:"ul"},"After the archive sync finishes you will see the ",(0,s.kt)("em",{parentName:"li"},"'Processed...'")," message appearing on average every 15 seconds when\nthe new block is processed."),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"mgasps"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"tps"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"bps")," values should not be treated as comparable as they may differ massively on different parts of\nthe chain. For example when blocks are empty you may see very high ",(0,s.kt)("inlineCode",{parentName:"li"},"bps")," values with very low (or even zero) ",(0,s.kt)("inlineCode",{parentName:"li"},"tps"),"\nand ",(0,s.kt)("inlineCode",{parentName:"li"},"mgasps")," values as there are no transactions and no gas for EVM processing and blocks are very light. On the other\nhand when blocks are filled with very heavy transactions then ",(0,s.kt)("inlineCode",{parentName:"li"},"bps")," might be very low while ",(0,s.kt)("inlineCode",{parentName:"li"},"mgasps")," will be very\nhigh. It is even possible that you will see a lot of very light transactions where ",(0,s.kt)("inlineCode",{parentName:"li"},"tps")," will be high while ",(0,s.kt)("inlineCode",{parentName:"li"},"bps"),"\nand ",(0,s.kt)("inlineCode",{parentName:"li"},"mgasps")," will be average.")))}p.isMDXComponent=!0},3192:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/Untitled(1)-e656672bbe5916256187472154cefdbf.png"},9301:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(57)-6779647766702b4a63d74e01bd27978a.png"},4690:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(58)-c9384f350dfd11adec8694dbfb73b52e.png"},4705:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(59)-e679a155889ccdf54fbff7695df20603.png"},2794:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(62)-0a2d55653744c60e1f441c3a4996d694.png"},8950:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/image(64)-08dc4f39e5c66db897d66b586c5581d0.png"}}]); \ No newline at end of file diff --git a/assets/js/f4f34a3a.4b784570.js b/assets/js/f4f34a3a.4b784570.js new file mode 100644 index 000000000..74d7eb8de --- /dev/null +++ b/assets/js/f4f34a3a.4b784570.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8636],{3905:(e,t,r)=>{r.d(t,{Zo:()=>i,kt:()=>f});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 a(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 s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=o.createContext({}),u=function(e){var t=o.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},i=function(e){var t=u(e.components);return o.createElement(c.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},b=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,i=l(e,["components","mdxType","originalType","parentName"]),p=u(r),b=n,f=p["".concat(c,".").concat(b)]||p[b]||m[b]||a;return r?o.createElement(f,s(s({ref:t},i),{},{components:r})):o.createElement(f,s({ref:t},i))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,s=new Array(a);s[0]=b;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:n,s[1]=l;for(var u=2;u<a;u++)s[u]=r[u];return o.createElement.apply(null,s)}return o.createElement.apply(null,r)}b.displayName="MDXCreateElement"},5145:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>u});var o=r(7462),n=(r(7294),r(3905));const a={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},s=void 0,l={permalink:"/blog/mdx-blog-post",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",formattedDate:"August 1, 2021",tags:[{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},c={authorsImageUrls:[void 0]},u=[],i={toc:u},p="wrapper";function m(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,o.Z)({},i,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Blog posts support ",(0,n.kt)("a",{parentName:"p",href:"https://docusaurus.io/docs/markdown-features"},"Docusaurus Markdown features"),", such as ",(0,n.kt)("a",{parentName:"p",href:"https://mdxjs.com/"},"MDX"),"."),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"Use the power of React to create interactive blog posts."),(0,n.kt)("pre",{parentName:"admonition"},(0,n.kt)("code",{parentName:"pre",className:"language-js"},'<button onClick={() => alert("button clicked!")}>Click me!</button>\n')),(0,n.kt)("button",{onClick:()=>alert("button clicked!")},"Click me!")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f8e9baae.d161ba1d.js b/assets/js/f8e9baae.d161ba1d.js new file mode 100644 index 000000000..b52b53564 --- /dev/null +++ b/assets/js/f8e9baae.d161ba1d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2175],{3905:(t,e,a)=>{a.d(e,{Zo:()=>p,kt:()=>N});var r=a(7294);function n(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function o(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){n(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function l(t,e){if(null==t)return{};var a,r,n=function(t,e){if(null==t)return{};var a,r,n={},i=Object.keys(t);for(r=0;r<i.length;r++)a=i[r],e.indexOf(a)>=0||(n[a]=t[a]);return n}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)a=i[r],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(n[a]=t[a])}return n}var c=r.createContext({}),s=function(t){var e=r.useContext(c),a=e;return t&&(a="function"==typeof t?t(e):o(o({},e),t)),a},p=function(t){var e=s(t.components);return r.createElement(c.Provider,{value:e},t.children)},f="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(t,e){var a=t.components,n=t.mdxType,i=t.originalType,c=t.parentName,p=l(t,["components","mdxType","originalType","parentName"]),f=s(a),d=n,N=f["".concat(c,".").concat(d)]||f[d]||m[d]||i;return a?r.createElement(N,o(o({ref:e},p),{},{components:a})):r.createElement(N,o({ref:e},p))}));function N(t,e){var a=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var c in e)hasOwnProperty.call(e,c)&&(l[c]=e[c]);l.originalType=t,l[f]="string"==typeof t?t:n,o[1]=l;for(var s=2;s<i;s++)o[s]=a[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},4936:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=a(7462),n=(a(7294),a(3905));const i={},o="AccountAbstraction",l={unversionedId:"fundamentals/configuration/accountabstraction",id:"fundamentals/configuration/accountabstraction",title:"AccountAbstraction",description:"| Property | Env Variable | Description | Default |",source:"@site/docs/02-fundamentals/04-configuration/accountabstraction.md",sourceDirName:"02-fundamentals/04-configuration",slug:"/fundamentals/configuration/accountabstraction",permalink:"/docs/fundamentals/configuration/accountabstraction",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/02-fundamentals/04-configuration/accountabstraction.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/docs/fundamentals/configuration/"},next:{title:"Aura",permalink:"/docs/fundamentals/configuration/aura"}},c={},s=[],p={toc:s},f="wrapper";function m(t){let{components:e,...a}=t;return(0,n.kt)(f,(0,r.Z)({},p,a,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"accountabstraction"},"AccountAbstraction"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Property"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Env Variable"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Default"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"AaPriorityPeersMaxCount"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ACCOUNTABSTRACTIONCONFIG_AAPRIORITYPEERSMAXCOUNT"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Max number of priority AccountAbstraction peers."),(0,n.kt)("td",{parentName:"tr",align:"left"},"20")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Enabled"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ACCOUNTABSTRACTIONCONFIG_ENABLED"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines whether UserOperations are allowed."),(0,n.kt)("td",{parentName:"tr",align:"left"},"false")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"EntryPointContractAddresses"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ACCOUNTABSTRACTIONCONFIG_ENTRYPOINTCONTRACTADDRESSES"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines the comma separated list of hex string representations of the addresses of the EntryPoint contract to which transactions can be made"),(0,n.kt)("td",{parentName:"tr",align:"left"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"FlashbotsEndpoint"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ACCOUNTABSTRACTIONCONFIG_FLASHBOTSENDPOINT"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines the string URL for the flashbots bundle reception endpoint"),(0,n.kt)("td",{parentName:"tr",align:"left"},(0,n.kt)("a",{parentName:"td",href:"https://relay.flashbots.net/"},"https://relay.flashbots.net/"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"MaximumUserOperationPerSender"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ACCOUNTABSTRACTIONCONFIG_MAXIMUMUSEROPERATIONPERSENDER"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines the maximum number of UserOperations that can be kept for each sender"),(0,n.kt)("td",{parentName:"tr",align:"left"},"1")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"MinimumGasPrice"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ACCOUNTABSTRACTIONCONFIG_MINIMUMGASPRICE"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines the minimum gas price for a user operation to be accepted"),(0,n.kt)("td",{parentName:"tr",align:"left"},"1")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"UserOperationPoolSize"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ACCOUNTABSTRACTIONCONFIG_USEROPERATIONPOOLSIZE"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines the maximum number of UserOperations that can be kept in memory by clients"),(0,n.kt)("td",{parentName:"tr",align:"left"},"200")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"WhitelistedPaymasters"),(0,n.kt)("td",{parentName:"tr",align:"left"},"NETHERMIND_ACCOUNTABSTRACTIONCONFIG_WHITELISTEDPAYMASTERS"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Defines a comma separated list of the hex string representations of paymasters that are whitelisted by the node"),(0,n.kt)("td",{parentName:"tr",align:"left"})))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f9383d62.e6b6260f.js b/assets/js/f9383d62.e6b6260f.js new file mode 100644 index 000000000..4ab405313 --- /dev/null +++ b/assets/js/f9383d62.e6b6260f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[122],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>g});var r=n(7294);function i(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),d=i,g=u["".concat(s,".").concat(d)]||u[d]||m[d]||a;return n?r.createElement(g,o(o({ref:t},c),{},{components:n})):r.createElement(g,o({ref:t},c))}));function g(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var p=2;p<a;p++)o[p]=n[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},7128:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));const a={description:"Networks currently supported by Nethermind Client"},o="Networks",l={unversionedId:"getting-started/networks",id:"getting-started/networks",title:"Networks",description:"Networks currently supported by Nethermind Client",source:"@site/docs/01-getting-started/networks.md",sourceDirName:"01-getting-started",slug:"/getting-started/networks",permalink:"/docs/getting-started/networks",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/01-getting-started/networks.md",tags:[],version:"current",frontMatter:{description:"Networks currently supported by Nethermind Client"},sidebar:"tutorialSidebar",previous:{title:"Migrating From Geth",permalink:"/docs/getting-started/migrating-from-geth"},next:{title:"System Requirements",permalink:"/docs/getting-started/system-requirements"}},s={},p=[{value:"Mainnet",id:"mainnet",level:3},{value:"G\xf6rli (goerli)",id:"g\xf6rli-goerli",level:3}],c={toc:p},u="wrapper";function m(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"networks"},"Networks"),(0,i.kt)("p",null,"By default Nethermind launches with mainnet network configuration, but it is possible to sync other networks by adding a\ncommand line switch:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"--config [NETWORK_NAME]\n")),(0,i.kt)("p",null,"Network name can be any of the following"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"mainnet"),(0,i.kt)("li",{parentName:"ul"},"goerli"),(0,i.kt)("li",{parentName:"ul"},"sepolia"),(0,i.kt)("li",{parentName:"ul"},"gnosis"),(0,i.kt)("li",{parentName:"ul"},"poacore"),(0,i.kt)("li",{parentName:"ul"},"energyweb"),(0,i.kt)("li",{parentName:"ul"},"volta"),(0,i.kt)("li",{parentName:"ul"},"kovan (only fast sync and may fail if pWASM transactions appear)")),(0,i.kt)("h3",{id:"mainnet"},"Mainnet"),(0,i.kt)("p",null,"This is the main Ethereum network. It can be run using config below and this is default setting - mainnet will run\nif ",(0,i.kt)("inlineCode",{parentName:"p"},"--config")," is not specified as well."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"Nethermind.Runner --config mainnet\n")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://ethstats.net/"},"Ethereum Mainnet Status")),(0,i.kt)("h3",{id:"g\xf6rli-goerli"},"G\xf6rli (goerli)"),(0,i.kt)("p",null,"This is a Clique-PoA based testnet supported by all major clients. It has 15 seconds between blocks that are sealed by\nGoerli validators."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"Nethermind.Runner --config goerli\n")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://stats.goerli.net/"},"Goerli Status")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://gitter.im/goerli/testnet"},"Goerli Gitter Space")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fce1c785.5d8d5ebf.js b/assets/js/fce1c785.5d8d5ebf.js new file mode 100644 index 000000000..7a4e70bdd --- /dev/null +++ b/assets/js/fce1c785.5d8d5ebf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[643],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var u=n.createContext({}),p=function(e){var t=n.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,u=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=p(a),d=r,b=m["".concat(u,".").concat(d)]||m[d]||c[d]||l;return a?n.createElement(b,i(i({ref:t},s),{},{components:a})):n.createElement(b,i({ref:t},s))}));function b(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=d;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o[m]="string"==typeof e?e:r,i[1]=o;for(var p=2;p<l;p++)i[p]=a[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}d.displayName="MDXCreateElement"},5162:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7294),r=a(6010);const l={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:a,className:i}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(l.tabItem,i),hidden:a},t)}},4866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(7462),r=a(7294),l=a(6010),i=a(2466),o=a(6550),u=a(1980),p=a(7392),s=a(12);function m(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function c(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??m(a);return function(e){const t=(0,p.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,a])}function d(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function b(e){let{queryString:t=!1,groupId:a}=e;const n=(0,o.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,u._X)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(n.location.search);t.set(l,e),n.replace({...n.location,search:t.toString()})}),[l,n])]}function k(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,l=c(e),[i,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!d({value:t,tabValues:a}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l}))),[u,p]=b({queryString:a,groupId:n}),[m,k]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,l]=(0,s.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:n}),f=(()=>{const e=u??m;return d({value:e,tabValues:l})?e:null})();(0,r.useLayoutEffect)((()=>{f&&o(f)}),[f]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!d({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);o(e),p(e),k(e)}),[p,k,l]),tabValues:l}}var f=a(2389);const h={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function N(e){let{className:t,block:a,selectedValue:o,selectValue:u,tabValues:p}=e;const s=[],{blockElementScrollPositionUntilNextRender:m}=(0,i.o5)(),c=e=>{const t=e.currentTarget,a=s.indexOf(t),n=p[a].value;n!==o&&(m(t),u(n))},d=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const a=s.indexOf(e.currentTarget)+1;t=s[a]??s[0];break}case"ArrowLeft":{const a=s.indexOf(e.currentTarget)-1;t=s[a]??s[s.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},p.map((e=>{let{value:t,label:a,attributes:i}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>s.push(e),onKeyDown:d,onClick:c},i,{className:(0,l.Z)("tabs__item",h.tabItem,i?.className,{"tabs__item--active":o===t})}),a??t)})))}function g(e){let{lazy:t,children:a,selectedValue:n}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=k(e);return r.createElement("div",{className:(0,l.Z)("tabs-container",h.tabList)},r.createElement(N,(0,n.Z)({},e,t)),r.createElement(g,(0,n.Z)({},e,t)))}function v(e){const t=(0,f.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},4888:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>u,default:()=>b,frontMatter:()=>o,metadata:()=>p,toc:()=>m});var n=a(7462),r=(a(7294),a(3905)),l=a(4866),i=a(5162);const o={},u="web3",p={unversionedId:"nethermind-utilities/cli/web3",id:"nethermind-utilities/cli/web3",title:"web3",description:"web3.abi",source:"@site/docs/06-nethermind-utilities/cli/web3.md",sourceDirName:"06-nethermind-utilities/cli",slug:"/nethermind-utilities/cli/web3",permalink:"/docs/nethermind-utilities/cli/web3",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/06-nethermind-utilities/cli/web3.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"txpool",permalink:"/docs/nethermind-utilities/cli/txpool"},next:{title:"Pipeline",permalink:"/docs/nethermind-utilities/pipeline"}},s={},m=[{value:"web3.abi",id:"web3abi",level:2},{value:"web3.clientVersion",id:"web3clientversion",level:2},{value:"web3.sha3",id:"web3sha3",level:2},{value:"web3.toDecimal",id:"web3todecimal",level:2}],c={toc:m},d="wrapper";function b(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"web3"},"web3"),(0,r.kt)("h2",{id:"web3abi"},"web3.abi"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"web3.abi(name)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"name"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of web3.abi"',title:'"Example',request:!0,of:!0,'web3.abi"':!0},"web3.abi(name)\n")),(0,r.kt)("h2",{id:"web3clientversion"},"web3.clientVersion"),(0,r.kt)("p",null,"Returns the current client version."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"web3.clientVersion"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"This method doesn't have parameters.")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"web3.clientVersion\n"))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"Nethermind/v1.10.75-0-310037468-20210717/X64-Linux/5.0.7\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/web3#web3_clientversion"},"See also JSON RPC web3_clientVersion")),(0,r.kt)("h2",{id:"web3sha3"},"web3.sha3"),(0,r.kt)("p",null,"Returns Keccak of the given data."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"web3.sha3(data)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"data"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Data")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"Hash")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)(l.Z,{mdxType:"Tabs"},(0,r.kt)(i.Z,{label:"Request",value:"request",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'web3.sha3(["0x47767638636211111a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01abc"])\n'))),(0,r.kt)(i.Z,{label:"Response",value:"response",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"0xed3a98886604dcd55a159d55d35f7c14fa2f2aab7fbccbfa5511d8dadeea9442\n")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.nethermind.io/nethermind/ethereum-client/json-rpc/web3#web3_sha3"},"See also JSON RPC web3_sha3")),(0,r.kt)("h2",{id:"web3todecimal"},"web3.toDecimal"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Invocation"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"web3.toDecimal(hex)"))))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"hex"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"String")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Returned type"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"JavaScript Object")),(0,r.kt)("td",{parentName:"tr",align:"left"})))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="Example request of web3.toDecimal"',title:'"Example',request:!0,of:!0,'web3.toDecimal"':!0},"web3.toDecimal(hex)\n")))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fdefced7.30d56142.js b/assets/js/fdefced7.30d56142.js new file mode 100644 index 000000000..fdb4d4041 --- /dev/null +++ b/assets/js/fdefced7.30d56142.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5958],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function d(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),m=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},l=function(e){var t=m(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,l=d(e,["components","mdxType","originalType","parentName"]),s=m(n),u=a,f=s["".concat(p,".").concat(u)]||s[u]||c[u]||i;return n?r.createElement(f,o(o({ref:t},l),{},{components:n})):r.createElement(f,o({ref:t},l))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var d={};for(var p in t)hasOwnProperty.call(t,p)&&(d[p]=t[p]);d.originalType=e,d[s]="string"==typeof e?e:a,o[1]=d;for(var m=2;m<i;m++)o[m]=n[m];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},8719:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>d,toc:()=>m});var r=n(7462),a=(n(7294),n(3905));const i={},o="Trie.Pruning",d={unversionedId:"monitoring/metrics-explanation/trie.pruning",id:"monitoring/metrics-explanation/trie.pruning",title:"Trie.Pruning",description:"| Metric | Description |",source:"@site/docs/04-monitoring/metrics-explanation/trie.pruning.md",sourceDirName:"04-monitoring/metrics-explanation",slug:"/monitoring/metrics-explanation/trie.pruning",permalink:"/docs/monitoring/metrics-explanation/trie.pruning",draft:!1,editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/docs/04-monitoring/metrics-explanation/trie.pruning.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Trie",permalink:"/docs/monitoring/metrics-explanation/trie"},next:{title:"TxPool",permalink:"/docs/monitoring/metrics-explanation/txpool"}},p={},m=[],l={toc:m},s="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"triepruning"},"Trie.Pruning"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"left"},"Metric"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_cached_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nodes that are currently kept in cache (either persisted or not)")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_committed_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_deep_pruned_persisted_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nodes that have been removed from the cache during deep pruning because they have been persisted before.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_deep_pruning_time"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Time taken by the last deep pruning.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_last_persisted_block_number"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Last persisted block number (snapshot).")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_loaded_from_cache_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of reads from the node cache.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_loaded_from_db_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of DB reads.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_loaded_from_rlp_cache_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of reads from the RLP cache.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_memory_used_by_cache"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Estimated memory used by cache.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_persisted_node_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nodes that have been persisted since the session start.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pruned_persisted_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nodes that have been removed from the cache during pruning because they have been persisted before.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pruned_transient_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Nodes that have been removed from the cache during pruning because they were no longer needed.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_pruning_time"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Time taken by the last pruning.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_replaced_nodes_count"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Number of nodes that have been exactly the same as other nodes in the cache when committing.")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"left"},"nethermind_snapshot_persistence_time"),(0,a.kt)("td",{parentName:"tr",align:"left"},"Time taken by the last snapshot persistence.")))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.484d3acd.js b/assets/js/main.484d3acd.js new file mode 100644 index 000000000..61c5b6273 --- /dev/null +++ b/assets/js/main.484d3acd.js @@ -0,0 +1,2 @@ +/*! For license information please see main.484d3acd.js.LICENSE.txt */ +(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"003b20fb":[()=>n.e(8392).then(n.bind(n,9772)),"@site/docs/02-fundamentals/04-configuration/sync.md",9772],"0116ccdc":[()=>n.e(7476).then(n.bind(n,6867)),"@site/docs/02-fundamentals/05-security.md",6867],"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"026e6f12":[()=>n.e(90).then(n.bind(n,6658)),"@site/docs/02-fundamentals/04-configuration/bloom.md",6658],"031793e1":[()=>n.e(1633).then(n.t.bind(n,2511,19)),"~blog/default/blog-tags-facebook-038.json",2511],"0403e71a":[()=>n.e(8922).then(n.bind(n,5667)),"@site/docs/02-fundamentals/04-configuration/ethstats.md",5667],"068062df":[()=>n.e(1288).then(n.bind(n,1322)),"@site/docs/01-getting-started/system-requirements.md",1322],"096bfee4":[()=>n.e(7178).then(n.t.bind(n,5010,19)),"~blog/default/blog-tags-facebook-038-list.json",5010],"09a763c4":[()=>n.e(3418).then(n.bind(n,3338)),"@site/docs/02-fundamentals/04-configuration/plugin.md",3338],"0be924aa":[()=>n.e(5881).then(n.bind(n,5211)),"@site/docs/02-fundamentals/04-configuration/mev.md",5211],"0c92c0a5":[()=>n.e(4405).then(n.bind(n,4081)),"@site/docs/02-fundamentals/04-configuration/txpool.md",4081],"0d2058e7":[()=>Promise.all([n.e(532),n.e(3755)]).then(n.bind(n,6291)),"@site/docs/06-nethermind-utilities/cli/trace.md",6291],"0e71e10c":[()=>n.e(2031).then(n.bind(n,7062)),"@site/docs/02-fundamentals/06-logs/logs.md",7062],"0f34cd48":[()=>Promise.all([n.e(532),n.e(7039)]).then(n.bind(n,6248)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/net.mdx",6248],"108c5320":[()=>n.e(9391).then(n.bind(n,2596)),"@site/docs/02-fundamentals/07-database.md",2596],"11c6555c":[()=>n.e(9839).then(n.bind(n,2716)),"@site/docs/02-fundamentals/06-logs/logging-configuration.md",2716],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,4228)),"@theme/DocCategoryGeneratedIndexPage",4228],"14f3d8bb":[()=>n.e(9090).then(n.bind(n,9329)),"@site/docs/06-nethermind-utilities/cli/README.md",9329],"16bcd8b6":[()=>n.e(2674).then(n.bind(n,1054)),"@site/docs/02-fundamentals/04-configuration/README.md",1054],17896441:[()=>Promise.all([n.e(532),n.e(1506),n.e(7918)]).then(n.bind(n,5154)),"@theme/DocItem",5154],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1c091541":[()=>n.e(8271).then(n.t.bind(n,4469,19)),"/home/runner/work/docs/docs/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],"1f391b9e":[()=>Promise.all([n.e(532),n.e(1506),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"2027d067":[()=>Promise.all([n.e(532),n.e(9555)]).then(n.bind(n,9702)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/proof.md",9702],"230f210b":[()=>Promise.all([n.e(532),n.e(4819)]).then(n.bind(n,4450)),"@site/docs/06-nethermind-utilities/cli/debug.md",4450],23285914:[()=>n.e(8555).then(n.bind(n,6434)),"@site/docs/02-fundamentals/04-configuration/jsonrpc.md",6434],"23374ca6":[()=>n.e(8421).then(n.bind(n,6527)),"@site/docs/README.md",6527],"2359c720":[()=>n.e(7208).then(n.bind(n,1743)),"@site/docs/04-monitoring/metrics-explanation/txpool.md",1743],"247783bb":[()=>n.e(9334).then(n.t.bind(n,3769,19)),"/home/runner/work/docs/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"247dabad":[()=>n.e(4867).then(n.bind(n,7897)),"@site/docs/07-resources/guides-and-helpers/validator-setup/eth2-validator.md",7897],"252529aa":[()=>n.e(5548).then(n.t.bind(n,7254,19)),"~docs/default/category-docs-tutorialsidebar-category-fundamentals-857.json",7254],"29ca8489":[()=>Promise.all([n.e(532),n.e(3632)]).then(n.bind(n,3368)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/admin.md",3368],"2b9f830c":[()=>n.e(8109).then(n.t.bind(n,2533,19)),"~docs/default/category-docs-tutorialsidebar-category-nethermind-utilities-95d.json",2533],"30a24c52":[()=>n.e(453).then(n.t.bind(n,8605,19)),"~blog/default/blog-tags-hello-039.json",8605],"30c152a1":[()=>n.e(6161).then(n.bind(n,3690)),"@site/docs/02-fundamentals/04-configuration/auramerge.md",3690],"3152febb":[()=>n.e(225).then(n.t.bind(n,3492,19)),"~docs/default/category-docs-tutorialsidebar-category-getting-started-3f9.json",3492],31563212:[()=>Promise.all([n.e(532),n.e(1418)]).then(n.bind(n,3628)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/parity.md",3628],"335505b0":[()=>n.e(4641).then(n.bind(n,9370)),"@site/docs/07-resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack.md",9370],"35e5a526":[()=>n.e(7944).then(n.bind(n,6070)),"@site/docs/05-for-developers/building-nethermind.md",6070],36132932:[()=>n.e(8217).then(n.bind(n,8899)),"@site/docs/04-monitoring/metrics-explanation/accountabstraction.network.md",8899],"36cf5d25":[()=>n.e(3282).then(n.bind(n,7861)),"@site/docs/02-fundamentals/04-configuration/merge.md",7861],"386d502a":[()=>Promise.all([n.e(532),n.e(1035)]).then(n.bind(n,5161)),"@site/docs/02-fundamentals/04-configuration/sample-configuration.mdx",5161],"393be207":[()=>n.e(7414).then(n.bind(n,3123)),"@site/src/pages/markdown-page.md",3123],"394234c7":[()=>n.e(6806).then(n.bind(n,314)),"@site/docs/01-getting-started/manage-nethermind-with-systemd.md",314],"394f37a7":[()=>n.e(2831).then(n.bind(n,336)),"@site/docs/07-resources/connecting-wallet.md",336],"3cef4706":[()=>n.e(7848).then(n.bind(n,1357)),"@site/docs/07-resources/firewall-configuration.md",1357],"44577fad":[()=>n.e(8979).then(n.bind(n,7803)),"@site/docs/02-fundamentals/04-configuration/aura.md",7803],"463f6399":[()=>n.e(1702).then(n.bind(n,971)),"@site/docs/02-fundamentals/04-configuration/keystore.md",971],"4808fd9f":[()=>n.e(45).then(n.bind(n,6414)),"@site/docs/07-resources/guides-and-helpers/eth2-less-than-greater-than-nethermind.md",6414],"4c9e35b1":[()=>n.e(9035).then(n.t.bind(n,499,19)),"~blog/default/blog-tags-hola-ea2-list.json",499],"4d90c4d9":[()=>n.e(8200).then(n.bind(n,7929)),"@site/docs/05-for-developers/web3.py.md",7929],"4f2dfd2d":[()=>Promise.all([n.e(532),n.e(4173)]).then(n.bind(n,8165)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/witness.md",8165],"4f624714":[()=>Promise.all([n.e(532),n.e(9475)]).then(n.bind(n,9651)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/txpool.md",9651],"5151d7fe":[()=>Promise.all([n.e(532),n.e(5608)]).then(n.bind(n,1081)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/engine-jsonrpc-config-example.md",1081],"515ed2ae":[()=>n.e(2345).then(n.bind(n,7744)),"@site/docs/02-fundamentals/01-running-nethermind/runtime.md",7744],"535c1ff5":[()=>n.e(4693).then(n.bind(n,9121)),"@site/docs/04-monitoring/metrics-explanation/setting-up-local-metrics-infrastracture.md",9121],57295230:[()=>n.e(6879).then(n.bind(n,574)),"@site/docs/02-fundamentals/04-configuration/hive.md",574],59362658:[()=>n.e(2267).then(n.bind(n,8642)),"@site/blog/2021-08-01-mdx-blog-post.mdx",8642],"5bdddcf3":[()=>n.e(6682).then(n.bind(n,2398)),"@site/docs/04-monitoring/metrics-explanation/store.md",2398],"5cdd2ffd":[()=>Promise.all([n.e(532),n.e(1544)]).then(n.bind(n,3332)),"@site/docs/06-nethermind-utilities/cli/clique.md",3332],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"608ae6a4":[()=>n.e(6938).then(n.t.bind(n,4545,19)),"~blog/default/blog-tags-docusaurus-0e0-list.json",4545],"62282da9":[()=>Promise.all([n.e(532),n.e(7010)]).then(n.bind(n,3556)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/personal.md",3556],"64f637cf":[()=>n.e(5147).then(n.bind(n,9818)),"@site/docs/02-fundamentals/08-how-to-reduce-database-size/full-pruning.md",9818],"6613fd3b":[()=>n.e(6224).then(n.bind(n,3478)),"@site/docs/04-monitoring/metrics-explanation/network.md",3478],66406991:[()=>n.e(110).then(n.t.bind(n,711,19)),"~blog/default/blog-tags-hello-039-list.json",711],"6875c492":[()=>Promise.all([n.e(532),n.e(1506),n.e(732),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"6a658266":[()=>n.e(5378).then(n.bind(n,3604)),"@site/docs/04-monitoring/metrics-explanation/jsonrpc.md",3604],"6c6fcfe0":[()=>Promise.all([n.e(532),n.e(9918)]).then(n.bind(n,455)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/debug.md",455],"6c93811b":[()=>n.e(6417).then(n.bind(n,9425)),"@site/docs/04-monitoring/metrics-explanation/init.md",9425],"6dd8f82a":[()=>n.e(6833).then(n.bind(n,7585)),"@site/docs/07-resources/guides-and-helpers/validator-setup/aura-validator.md",7585],"6f716d37":[()=>n.e(7606).then(n.bind(n,5885)),"@site/docs/02-fundamentals/04-configuration/seq.md",5885],"72759bb7":[()=>n.e(5655).then(n.bind(n,1160)),"@site/docs/07-resources/know-issues.md",1160],"73664a40":[()=>n.e(3514).then(n.bind(n,1976)),"@site/blog/2019-05-29-long-blog-post.md",1976],"73fcbb53":[()=>Promise.all([n.e(532),n.e(9414)]).then(n.bind(n,2970)),"@site/docs/01-getting-started/installing-nethermind.md",2970],"75362c5c":[()=>n.e(3643).then(n.bind(n,5363)),"@site/docs/04-monitoring/metrics-explanation/db.md",5363],"761a9455":[()=>n.e(180).then(n.bind(n,2869)),"@site/docs/04-monitoring/metrics-explanation/consensus.aura.md",2869],"7661071f":[()=>n.e(9642).then(n.bind(n,6911)),"@site/blog/2021-08-26-welcome/index.md?truncated=true",6911],"76ecb8df":[()=>n.e(7919).then(n.bind(n,8658)),"@site/docs/01-getting-started/migrating-from-geth.md",8658],"77250fd7":[()=>Promise.all([n.e(532),n.e(8534)]).then(n.bind(n,4436)),"@site/docs/06-nethermind-utilities/cli/proof.md",4436],"79cbde4c":[()=>n.e(6654).then(n.bind(n,6397)),"@site/docs/04-monitoring/metrics-explanation/runner.md",6397],"7a68c7d8":[()=>n.e(1049).then(n.bind(n,6883)),"@site/docs/02-fundamentals/04-configuration/mining.md",6883],"7d5e0029":[()=>n.e(3988).then(n.bind(n,9496)),"@site/docs/04-monitoring/metrics-explanation/evm.md",9496],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"825018a4":[()=>n.e(4971).then(n.bind(n,9629)),"@site/docs/02-fundamentals/04-configuration/pruning.md",9629],"839299d0":[()=>n.e(166).then(n.bind(n,569)),"@site/docs/04-monitoring/metrics-explanation/README.md",569],"845744b6":[()=>n.e(757).then(n.bind(n,4172)),"@site/docs/02-fundamentals/08-how-to-reduce-database-size/resync-database-from-scratch.md",4172],"84d60698":[()=>n.e(7948).then(n.t.bind(n,4082,19)),"~docs/default/category-docs-tutorialsidebar-category-contact-us-19f.json",4082],"84eaa0d0":[()=>n.e(5497).then(n.t.bind(n,10,19)),"~docs/default/category-docs-tutorialsidebar-category-interacting-with-nethermind-b45.json",10],"8717b14a":[()=>n.e(948).then(n.bind(n,3352)),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",3352],"8995a362":[()=>n.e(9205).then(n.bind(n,649)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/evm.md",649],"8d8fd354":[()=>Promise.all([n.e(532),n.e(5519)]).then(n.bind(n,8311)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/eth.md",8311],"8f40cd51":[()=>n.e(1424).then(n.bind(n,7968)),"@site/docs/04-monitoring/metrics-explanation/trie.md",7968],"8fc202ae":[()=>Promise.all([n.e(532),n.e(3175)]).then(n.bind(n,6517)),"@site/docs/06-nethermind-utilities/cli/net.md",6517],"925b3f96":[()=>n.e(9003).then(n.bind(n,8856)),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",8856],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"94ffc943":[()=>n.e(4933).then(n.bind(n,72)),"@site/docs/02-fundamentals/09-private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain.md",72],"969befe5":[()=>Promise.all([n.e(532),n.e(6225)]).then(n.bind(n,2973)),"@site/docs/06-nethermind-utilities/cli/diag.md",2973],"96b60a33":[()=>n.e(9842).then(n.bind(n,464)),"@site/docs/02-fundamentals/08-how-to-reduce-database-size/README.md",464],"9cf795e3":[()=>n.e(8967).then(n.t.bind(n,1685,19)),"~docs/default/category-docs-tutorialsidebar-category-monitoring-e41.json",1685],"9d85131a":[()=>Promise.all([n.e(532),n.e(2529)]).then(n.bind(n,84)),"@site/docs/06-nethermind-utilities/cli/parity.md",84],"9dd11cd8":[()=>Promise.all([n.e(532),n.e(5093)]).then(n.bind(n,150)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/subscribe.md",150],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],a2b442ad:[()=>Promise.all([n.e(532),n.e(3111)]).then(n.bind(n,1694)),"@site/docs/06-nethermind-utilities/cli/eth.md",1694],a42fe60f:[()=>Promise.all([n.e(532),n.e(8785)]).then(n.bind(n,2134)),"@site/docs/04-monitoring/monitoring-node-health.md",2134],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(1506),n.e(732),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],a7434565:[()=>n.e(7645).then(n.t.bind(n,5745,19)),"/home/runner/work/docs/docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],a80da1cf:[()=>n.e(3205).then(n.t.bind(n,4863,19)),"~blog/default/blog-tags-docusaurus-0e0.json",4863],aa0f377f:[()=>n.e(3374).then(n.bind(n,9203)),"@site/docs/06-nethermind-utilities/pipeline.md",9203],addfe087:[()=>n.e(6011).then(n.bind(n,8707)),"@site/docs/05-for-developers/coding-style.md",8707],adec6d2b:[()=>n.e(821).then(n.bind(n,6606)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/README.md",6606],af7f12e4:[()=>Promise.all([n.e(532),n.e(5527)]).then(n.bind(n,9856)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/trace.md",9856],b0f859a8:[()=>n.e(100).then(n.bind(n,9027)),"@site/docs/02-fundamentals/04-configuration/receipt.md",9027],b183ded8:[()=>n.e(9546).then(n.bind(n,9115)),"@site/docs/04-monitoring/metrics-explanation/mev.md",9115],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,4556,19)),"~blog/default/blog-archive-80c.json",4556],b41e4962:[()=>Promise.all([n.e(532),n.e(1374)]).then(n.bind(n,1837)),"@site/docs/06-nethermind-utilities/cli/admin.md",1837],b53a0035:[()=>n.e(7723).then(n.bind(n,8176)),"@site/docs/02-fundamentals/04-configuration/wallet.md",8176],b6ba0dff:[()=>n.e(579).then(n.bind(n,1986)),"@site/docs/02-fundamentals/04-configuration/healthchecks.md",1986],bf8bff70:[()=>n.e(529).then(n.t.bind(n,9836,19)),"~docs/default/category-docs-tutorialsidebar-category-resources-784.json",9836],c0d97a59:[()=>n.e(5836).then(n.t.bind(n,9284,19)),"~docs/default/category-docs-tutorialsidebar-category-for-developers-60b.json",9284],c31daa4a:[()=>n.e(8508).then(n.bind(n,7778)),"@site/docs/04-monitoring/metrics-explanation/accountabstraction.md",7778],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,3261)),"@site/src/pages/index.js",3261],c7e79d4b:[()=>n.e(4053).then(n.bind(n,7374)),"@site/docs/02-fundamentals/04-configuration/metrics.md",7374],c7e82fdb:[()=>Promise.all([n.e(532),n.e(7690)]).then(n.bind(n,3274)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/web3.md",3274],c81a798d:[()=>n.e(8530).then(n.bind(n,7190)),"@site/docs/07-resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind.md",7190],ccc49370:[()=>Promise.all([n.e(532),n.e(1506),n.e(732),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],cd725121:[()=>n.e(9878).then(n.bind(n,9543)),"@site/docs/04-monitoring/metrics-explanation/dotnet-counters.md",9543],cd7ecfdc:[()=>n.e(6688).then(n.bind(n,878)),"@site/docs/02-fundamentals/09-private-networks/README.md",878],ce1c2c57:[()=>n.e(9537).then(n.bind(n,4741)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/rpc.md",4741],d0812bb9:[()=>Promise.all([n.e(532),n.e(8432)]).then(n.bind(n,2683)),"@site/docs/06-nethermind-utilities/cli/personal.md",2683],d4a26b2c:[()=>Promise.all([n.e(532),n.e(4687)]).then(n.bind(n,1025)),"@site/docs/02-fundamentals/running-nethermind-post-merge.md",1025],d8a27932:[()=>n.e(8854).then(n.bind(n,8825)),"@site/docs/02-fundamentals/04-configuration/blocks.md",8825],d95744ba:[()=>Promise.all([n.e(532),n.e(2198)]).then(n.bind(n,1385)),"@site/docs/03-interacting-with-nethermind/02-json-rpc-api/clique.md",1385],d999088d:[()=>n.e(8030).then(n.bind(n,7334)),"@site/docs/08-contact/README.md",7334],d9f32620:[()=>n.e(1914).then(n.bind(n,2900)),"@site/blog/2021-08-26-welcome/index.md",2900],db14c9d3:[()=>n.e(7017).then(n.bind(n,6478)),"@site/docs/04-monitoring/metrics-explanation/merge.plugin.md",6478],dcd469cb:[()=>n.e(9330).then(n.bind(n,9153)),"@site/docs/02-fundamentals/04-configuration/network.md",9153],dd2f7272:[()=>n.e(7169).then(n.bind(n,7316)),"@site/docs/05-for-developers/custom-analytic-tools.md",7316],e0e00496:[()=>n.e(713).then(n.bind(n,7964)),"@site/docs/07-resources/faq.md",7964],e16015ca:[()=>n.e(9700).then(n.t.bind(n,5688,19)),"~blog/default/blog-tags-hola-ea2.json",5688],e273c56f:[()=>n.e(2362).then(n.bind(n,1947)),"@site/blog/2019-05-28-first-blog-post.md",1947],e33c6b61:[()=>n.e(7199).then(n.bind(n,1055)),"@site/docs/05-for-developers/plugins.md",1055],e533526e:[()=>n.e(6353).then(n.bind(n,2808)),"@site/docs/04-monitoring/metrics-explanation/blockchain.md",2808],ebbf84a8:[()=>n.e(5251).then(n.bind(n,6745)),"@site/docs/02-fundamentals/09-private-networks/how-to-setup-a-nethermind-only-clique-based-chain.md",6745],ed4735bd:[()=>n.e(8367).then(n.bind(n,6053)),"@site/docs/02-fundamentals/04-configuration/tracestore.md",6053],edcc1cdc:[()=>Promise.all([n.e(532),n.e(7466)]).then(n.bind(n,8180)),"@site/docs/06-nethermind-utilities/cli/node.md",8180],f07817a9:[()=>n.e(1076).then(n.bind(n,9694)),"@site/docs/02-fundamentals/04-configuration/init.md",9694],f342b8d6:[()=>Promise.all([n.e(532),n.e(1542)]).then(n.bind(n,2647)),"@site/docs/02-fundamentals/01-running-nethermind/running-the-client.md",2647],f44497bc:[()=>Promise.all([n.e(532),n.e(6070)]).then(n.bind(n,227)),"@site/docs/06-nethermind-utilities/cli/txpool.md",227],f496bf89:[()=>Promise.all([n.e(532),n.e(1285)]).then(n.bind(n,9176)),"@site/docs/06-nethermind-utilities/cli/system.md",9176],f4c3a4a0:[()=>n.e(915).then(n.bind(n,3057)),"@site/docs/02-fundamentals/03-sync-modes.md",3057],f4f34a3a:[()=>n.e(8636).then(n.bind(n,5145)),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",5145],f8e9baae:[()=>n.e(2175).then(n.bind(n,4936)),"@site/docs/02-fundamentals/04-configuration/accountabstraction.md",4936],f9383d62:[()=>n.e(122).then(n.bind(n,7128)),"@site/docs/01-getting-started/networks.md",7128],fce1c785:[()=>Promise.all([n.e(532),n.e(643)]).then(n.bind(n,4888)),"@site/docs/06-nethermind-utilities/cli/web3.md",4888],fdefced7:[()=>n.e(5958).then(n.bind(n,8719)),"@site/docs/04-monitoring/metrics-explanation/trie.pruning.md",8719]};function c(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=n(9670),d=n(226);function p(e,t){if("*"===e)return i()({loading:c,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],p={},f=[],m=[],h=(0,u.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:c,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const f=[{path:"/blog",component:p("/blog","588"),exact:!0},{path:"/blog/archive",component:p("/blog/archive","d5c"),exact:!0},{path:"/blog/first-blog-post",component:p("/blog/first-blog-post","664"),exact:!0},{path:"/blog/long-blog-post",component:p("/blog/long-blog-post","689"),exact:!0},{path:"/blog/mdx-blog-post",component:p("/blog/mdx-blog-post","c99"),exact:!0},{path:"/blog/tags",component:p("/blog/tags","e00"),exact:!0},{path:"/blog/tags/docusaurus",component:p("/blog/tags/docusaurus","cfa"),exact:!0},{path:"/blog/tags/facebook",component:p("/blog/tags/facebook","5d1"),exact:!0},{path:"/blog/tags/hello",component:p("/blog/tags/hello","24f"),exact:!0},{path:"/blog/tags/hola",component:p("/blog/tags/hola","368"),exact:!0},{path:"/blog/welcome",component:p("/blog/welcome","5d4"),exact:!0},{path:"/markdown-page",component:p("/markdown-page","9d5"),exact:!0},{path:"/docs",component:p("/docs","f47"),routes:[{path:"/docs",component:p("/docs","74a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/contact-us",component:p("/docs/category/contact-us","aa9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/for-developers",component:p("/docs/category/for-developers","521"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/fundamentals",component:p("/docs/category/fundamentals","85a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/getting-started",component:p("/docs/category/getting-started","01f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/interacting-with-nethermind",component:p("/docs/category/interacting-with-nethermind","0a4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/monitoring",component:p("/docs/category/monitoring","f80"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/nethermind-utilities",component:p("/docs/category/nethermind-utilities","943"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/resources",component:p("/docs/category/resources","0c2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/contact",component:p("/docs/contact","23f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/for-developers/building-nethermind",component:p("/docs/for-developers/building-nethermind","9fd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/for-developers/coding-style",component:p("/docs/for-developers/coding-style","b00"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/for-developers/custom-analytic-tools",component:p("/docs/for-developers/custom-analytic-tools","b4b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/for-developers/plugins",component:p("/docs/for-developers/plugins","9bc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/for-developers/web3.py",component:p("/docs/for-developers/web3.py","2a2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration",component:p("/docs/fundamentals/configuration","19c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/accountabstraction",component:p("/docs/fundamentals/configuration/accountabstraction","daa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/aura",component:p("/docs/fundamentals/configuration/aura","02a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/auramerge",component:p("/docs/fundamentals/configuration/auramerge","44b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/blocks",component:p("/docs/fundamentals/configuration/blocks","627"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/bloom",component:p("/docs/fundamentals/configuration/bloom","e39"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/ethstats",component:p("/docs/fundamentals/configuration/ethstats","b95"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/healthchecks",component:p("/docs/fundamentals/configuration/healthchecks","68a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/hive",component:p("/docs/fundamentals/configuration/hive","86c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/init",component:p("/docs/fundamentals/configuration/init","220"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/jsonrpc",component:p("/docs/fundamentals/configuration/jsonrpc","80b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/keystore",component:p("/docs/fundamentals/configuration/keystore","a1c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/merge",component:p("/docs/fundamentals/configuration/merge","af4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/metrics",component:p("/docs/fundamentals/configuration/metrics","7ab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/mev",component:p("/docs/fundamentals/configuration/mev","a65"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/mining",component:p("/docs/fundamentals/configuration/mining","0ca"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/network",component:p("/docs/fundamentals/configuration/network","03f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/plugin",component:p("/docs/fundamentals/configuration/plugin","2be"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/pruning",component:p("/docs/fundamentals/configuration/pruning","e67"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/receipt",component:p("/docs/fundamentals/configuration/receipt","829"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/sample-configuration",component:p("/docs/fundamentals/configuration/sample-configuration","13b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/seq",component:p("/docs/fundamentals/configuration/seq","42e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/sync",component:p("/docs/fundamentals/configuration/sync","05e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/tracestore",component:p("/docs/fundamentals/configuration/tracestore","8d1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/txpool",component:p("/docs/fundamentals/configuration/txpool","5ab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/configuration/wallet",component:p("/docs/fundamentals/configuration/wallet","e2c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/database",component:p("/docs/fundamentals/database","899"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/how-to-reduce-database-size",component:p("/docs/fundamentals/how-to-reduce-database-size","7d9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/how-to-reduce-database-size/full-pruning",component:p("/docs/fundamentals/how-to-reduce-database-size/full-pruning","c99"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch",component:p("/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch","c95"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/logs/logging-configuration",component:p("/docs/fundamentals/logs/logging-configuration","556"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/logs/logs",component:p("/docs/fundamentals/logs/logs","6bf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/private-networks",component:p("/docs/fundamentals/private-networks","73e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain",component:p("/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain","f3f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain",component:p("/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain","5be"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/running-nethermind-post-merge",component:p("/docs/fundamentals/running-nethermind-post-merge","eab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/running-nethermind/running-the-client",component:p("/docs/fundamentals/running-nethermind/running-the-client","fce"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/running-nethermind/runtime",component:p("/docs/fundamentals/running-nethermind/runtime","24f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/security",component:p("/docs/fundamentals/security","fb2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/fundamentals/sync-modes",component:p("/docs/fundamentals/sync-modes","fc5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting-started/installing-nethermind",component:p("/docs/getting-started/installing-nethermind","6a9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting-started/manage-nethermind-with-systemd",component:p("/docs/getting-started/manage-nethermind-with-systemd","706"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting-started/migrating-from-geth",component:p("/docs/getting-started/migrating-from-geth","6f6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting-started/networks",component:p("/docs/getting-started/networks","221"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting-started/system-requirements",component:p("/docs/getting-started/system-requirements","58c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api",component:p("/docs/interacting-with-nethermind/json-rpc-api","b20"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/admin",component:p("/docs/interacting-with-nethermind/json-rpc-api/admin","077"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/clique",component:p("/docs/interacting-with-nethermind/json-rpc-api/clique","74d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/debug",component:p("/docs/interacting-with-nethermind/json-rpc-api/debug","f0d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example",component:p("/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example","01a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/eth",component:p("/docs/interacting-with-nethermind/json-rpc-api/eth","3c9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/evm",component:p("/docs/interacting-with-nethermind/json-rpc-api/evm","e59"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/net",component:p("/docs/interacting-with-nethermind/json-rpc-api/net","7c3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/parity",component:p("/docs/interacting-with-nethermind/json-rpc-api/parity","370"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/personal",component:p("/docs/interacting-with-nethermind/json-rpc-api/personal","839"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/proof",component:p("/docs/interacting-with-nethermind/json-rpc-api/proof","f82"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/rpc",component:p("/docs/interacting-with-nethermind/json-rpc-api/rpc","12f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/subscribe",component:p("/docs/interacting-with-nethermind/json-rpc-api/subscribe","b1e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/trace",component:p("/docs/interacting-with-nethermind/json-rpc-api/trace","dc7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/txpool",component:p("/docs/interacting-with-nethermind/json-rpc-api/txpool","5f3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/web3",component:p("/docs/interacting-with-nethermind/json-rpc-api/web3","8b4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/interacting-with-nethermind/json-rpc-api/witness",component:p("/docs/interacting-with-nethermind/json-rpc-api/witness","a8e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation",component:p("/docs/monitoring/metrics-explanation","2ab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/accountabstraction",component:p("/docs/monitoring/metrics-explanation/accountabstraction","37f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/accountabstraction.network",component:p("/docs/monitoring/metrics-explanation/accountabstraction.network","3d0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/blockchain",component:p("/docs/monitoring/metrics-explanation/blockchain","e91"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/consensus.aura",component:p("/docs/monitoring/metrics-explanation/consensus.aura","84e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/db",component:p("/docs/monitoring/metrics-explanation/db","ffe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/dotnet-counters",component:p("/docs/monitoring/metrics-explanation/dotnet-counters","e75"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/evm",component:p("/docs/monitoring/metrics-explanation/evm","3ab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/init",component:p("/docs/monitoring/metrics-explanation/init","64e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/jsonrpc",component:p("/docs/monitoring/metrics-explanation/jsonrpc","ec7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/merge.plugin",component:p("/docs/monitoring/metrics-explanation/merge.plugin","4d7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/mev",component:p("/docs/monitoring/metrics-explanation/mev","ee6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/network",component:p("/docs/monitoring/metrics-explanation/network","812"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/runner",component:p("/docs/monitoring/metrics-explanation/runner","7bd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture",component:p("/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture","e94"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/store",component:p("/docs/monitoring/metrics-explanation/store","ed1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/trie",component:p("/docs/monitoring/metrics-explanation/trie","b02"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/trie.pruning",component:p("/docs/monitoring/metrics-explanation/trie.pruning","ddd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/metrics-explanation/txpool",component:p("/docs/monitoring/metrics-explanation/txpool","4b7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/monitoring/monitoring-node-health",component:p("/docs/monitoring/monitoring-node-health","4e1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli",component:p("/docs/nethermind-utilities/cli","d87"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/admin",component:p("/docs/nethermind-utilities/cli/admin","0b9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/clique",component:p("/docs/nethermind-utilities/cli/clique","756"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/debug",component:p("/docs/nethermind-utilities/cli/debug","89f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/diag",component:p("/docs/nethermind-utilities/cli/diag","fc8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/eth",component:p("/docs/nethermind-utilities/cli/eth","e52"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/net",component:p("/docs/nethermind-utilities/cli/net","52f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/node",component:p("/docs/nethermind-utilities/cli/node","30f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/parity",component:p("/docs/nethermind-utilities/cli/parity","6af"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/personal",component:p("/docs/nethermind-utilities/cli/personal","7ec"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/proof",component:p("/docs/nethermind-utilities/cli/proof","a3b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/system",component:p("/docs/nethermind-utilities/cli/system","27d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/trace",component:p("/docs/nethermind-utilities/cli/trace","6b0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/txpool",component:p("/docs/nethermind-utilities/cli/txpool","4e1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/cli/web3",component:p("/docs/nethermind-utilities/cli/web3","ba7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nethermind-utilities/pipeline",component:p("/docs/nethermind-utilities/pipeline","84e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/connecting-wallet",component:p("/docs/resources/connecting-wallet","859"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/faq",component:p("/docs/resources/faq","fbb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/firewall-configuration",component:p("/docs/resources/firewall-configuration","52e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack",component:p("/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack","a92"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind",component:p("/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind","5e9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind",component:p("/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind","6a3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/guides-and-helpers/validator-setup/aura-validator",component:p("/docs/resources/guides-and-helpers/validator-setup/aura-validator","0dd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/guides-and-helpers/validator-setup/eth2-validator",component:p("/docs/resources/guides-and-helpers/validator-setup/eth2-validator","340"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/resources/know-issues",component:p("/docs/resources/know-issues","d30"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:p("/","fc2"),exact:!0},{path:"*",component:p("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var c=n(723),u=n(6550),d=n(8790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(7462),m=n(5742),h=n(2263),g=n(4996),b=n(6668),v=n(1944),y=n(4711),w=n(9727),k=n(3320),S=n(197);function E(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e}}=(0,h.Z)(),{pathname:t}=(0,u.TH)();return e+(0,g.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function _(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(x,null),r.createElement(E,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var A=n(8934),L=n(8940);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const R=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),P("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(R,{previousLocation:this.previousLocation,location:t},r.createElement(u.AW,{location:t,render:()=>e}))}}const D=O,I="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",j="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${I}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${M}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${j}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${j}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function z(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:I}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,u.TH)();return t&&n===e?r.createElement(z,null):null}function $(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(4763);function G(){const e=(0,d.H)(c.Z),t=(0,u.TH)();return r.createElement(q.Z,null,r.createElement(L.M,null,r.createElement(A.t,null,r.createElement(p,null,r.createElement($,null),r.createElement(_,null),r.createElement(U,null),r.createElement(D,{location:T(t)},e)))))}var H=n(6887);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var V=n(9670);const W=new Set,Y=new Set,K=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,X={prefetch(e){if(!(e=>!K()&&!Y.has(e)&&!W.has(e))(e))return!1;W.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(H).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!K()&&!Y.has(e))(e)&&(Y.add(e),N(e))},Q=Object.freeze(X);if(l.Z.canUseDOM){window.docusaurus=Q;const e=a.hydrate;N(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(G,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>u,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"README","docs":[{"id":"contact/README","path":"/docs/contact/","sidebar":"tutorialSidebar"},{"id":"for-developers/building-nethermind","path":"/docs/for-developers/building-nethermind","sidebar":"tutorialSidebar"},{"id":"for-developers/coding-style","path":"/docs/for-developers/coding-style","sidebar":"tutorialSidebar"},{"id":"for-developers/custom-analytic-tools","path":"/docs/for-developers/custom-analytic-tools","sidebar":"tutorialSidebar"},{"id":"for-developers/plugins","path":"/docs/for-developers/plugins","sidebar":"tutorialSidebar"},{"id":"for-developers/web3.py","path":"/docs/for-developers/web3.py","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/accountabstraction","path":"/docs/fundamentals/configuration/accountabstraction","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/aura","path":"/docs/fundamentals/configuration/aura","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/auramerge","path":"/docs/fundamentals/configuration/auramerge","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/blocks","path":"/docs/fundamentals/configuration/blocks","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/bloom","path":"/docs/fundamentals/configuration/bloom","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/ethstats","path":"/docs/fundamentals/configuration/ethstats","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/healthchecks","path":"/docs/fundamentals/configuration/healthchecks","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/hive","path":"/docs/fundamentals/configuration/hive","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/init","path":"/docs/fundamentals/configuration/init","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/jsonrpc","path":"/docs/fundamentals/configuration/jsonrpc","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/keystore","path":"/docs/fundamentals/configuration/keystore","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/merge","path":"/docs/fundamentals/configuration/merge","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/metrics","path":"/docs/fundamentals/configuration/metrics","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/mev","path":"/docs/fundamentals/configuration/mev","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/mining","path":"/docs/fundamentals/configuration/mining","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/network","path":"/docs/fundamentals/configuration/network","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/plugin","path":"/docs/fundamentals/configuration/plugin","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/pruning","path":"/docs/fundamentals/configuration/pruning","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/README","path":"/docs/fundamentals/configuration/","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/receipt","path":"/docs/fundamentals/configuration/receipt","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/sample-configuration","path":"/docs/fundamentals/configuration/sample-configuration","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/seq","path":"/docs/fundamentals/configuration/seq","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/sync","path":"/docs/fundamentals/configuration/sync","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/tracestore","path":"/docs/fundamentals/configuration/tracestore","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/txpool","path":"/docs/fundamentals/configuration/txpool","sidebar":"tutorialSidebar"},{"id":"fundamentals/configuration/wallet","path":"/docs/fundamentals/configuration/wallet","sidebar":"tutorialSidebar"},{"id":"fundamentals/database","path":"/docs/fundamentals/database","sidebar":"tutorialSidebar"},{"id":"fundamentals/how-to-reduce-database-size/full-pruning","path":"/docs/fundamentals/how-to-reduce-database-size/full-pruning","sidebar":"tutorialSidebar"},{"id":"fundamentals/how-to-reduce-database-size/README","path":"/docs/fundamentals/how-to-reduce-database-size/","sidebar":"tutorialSidebar"},{"id":"fundamentals/how-to-reduce-database-size/resync-database-from-scratch","path":"/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch","sidebar":"tutorialSidebar"},{"id":"fundamentals/logs/logging-configuration","path":"/docs/fundamentals/logs/logging-configuration","sidebar":"tutorialSidebar"},{"id":"fundamentals/logs/logs","path":"/docs/fundamentals/logs/logs","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain","path":"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain","path":"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain","sidebar":"tutorialSidebar"},{"id":"fundamentals/private-networks/README","path":"/docs/fundamentals/private-networks/","sidebar":"tutorialSidebar"},{"id":"fundamentals/running-nethermind-post-merge","path":"/docs/fundamentals/running-nethermind-post-merge","sidebar":"tutorialSidebar"},{"id":"fundamentals/running-nethermind/running-the-client","path":"/docs/fundamentals/running-nethermind/running-the-client","sidebar":"tutorialSidebar"},{"id":"fundamentals/running-nethermind/runtime","path":"/docs/fundamentals/running-nethermind/runtime","sidebar":"tutorialSidebar"},{"id":"fundamentals/security","path":"/docs/fundamentals/security","sidebar":"tutorialSidebar"},{"id":"fundamentals/sync-modes","path":"/docs/fundamentals/sync-modes","sidebar":"tutorialSidebar"},{"id":"getting-started/installing-nethermind","path":"/docs/getting-started/installing-nethermind","sidebar":"tutorialSidebar"},{"id":"getting-started/manage-nethermind-with-systemd","path":"/docs/getting-started/manage-nethermind-with-systemd","sidebar":"tutorialSidebar"},{"id":"getting-started/migrating-from-geth","path":"/docs/getting-started/migrating-from-geth","sidebar":"tutorialSidebar"},{"id":"getting-started/networks","path":"/docs/getting-started/networks","sidebar":"tutorialSidebar"},{"id":"getting-started/system-requirements","path":"/docs/getting-started/system-requirements","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/admin","path":"/docs/interacting-with-nethermind/json-rpc-api/admin","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/clique","path":"/docs/interacting-with-nethermind/json-rpc-api/clique","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/debug","path":"/docs/interacting-with-nethermind/json-rpc-api/debug","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example","path":"/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/eth","path":"/docs/interacting-with-nethermind/json-rpc-api/eth","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/evm","path":"/docs/interacting-with-nethermind/json-rpc-api/evm","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/net","path":"/docs/interacting-with-nethermind/json-rpc-api/net","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/parity","path":"/docs/interacting-with-nethermind/json-rpc-api/parity","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/personal","path":"/docs/interacting-with-nethermind/json-rpc-api/personal","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/proof","path":"/docs/interacting-with-nethermind/json-rpc-api/proof","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/README","path":"/docs/interacting-with-nethermind/json-rpc-api/","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/rpc","path":"/docs/interacting-with-nethermind/json-rpc-api/rpc","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/subscribe","path":"/docs/interacting-with-nethermind/json-rpc-api/subscribe","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/trace","path":"/docs/interacting-with-nethermind/json-rpc-api/trace","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/txpool","path":"/docs/interacting-with-nethermind/json-rpc-api/txpool","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/web3","path":"/docs/interacting-with-nethermind/json-rpc-api/web3","sidebar":"tutorialSidebar"},{"id":"interacting-with-nethermind/json-rpc-api/witness","path":"/docs/interacting-with-nethermind/json-rpc-api/witness","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/accountabstraction","path":"/docs/monitoring/metrics-explanation/accountabstraction","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/accountabstraction.network","path":"/docs/monitoring/metrics-explanation/accountabstraction.network","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/blockchain","path":"/docs/monitoring/metrics-explanation/blockchain","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/consensus.aura","path":"/docs/monitoring/metrics-explanation/consensus.aura","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/db","path":"/docs/monitoring/metrics-explanation/db","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/dotnet-counters","path":"/docs/monitoring/metrics-explanation/dotnet-counters","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/evm","path":"/docs/monitoring/metrics-explanation/evm","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/init","path":"/docs/monitoring/metrics-explanation/init","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/jsonrpc","path":"/docs/monitoring/metrics-explanation/jsonrpc","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/merge.plugin","path":"/docs/monitoring/metrics-explanation/merge.plugin","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/mev","path":"/docs/monitoring/metrics-explanation/mev","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/network","path":"/docs/monitoring/metrics-explanation/network","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/README","path":"/docs/monitoring/metrics-explanation/","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/runner","path":"/docs/monitoring/metrics-explanation/runner","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/setting-up-local-metrics-infrastracture","path":"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/store","path":"/docs/monitoring/metrics-explanation/store","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/trie","path":"/docs/monitoring/metrics-explanation/trie","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/trie.pruning","path":"/docs/monitoring/metrics-explanation/trie.pruning","sidebar":"tutorialSidebar"},{"id":"monitoring/metrics-explanation/txpool","path":"/docs/monitoring/metrics-explanation/txpool","sidebar":"tutorialSidebar"},{"id":"monitoring/monitoring-node-health","path":"/docs/monitoring/monitoring-node-health","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/admin","path":"/docs/nethermind-utilities/cli/admin","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/clique","path":"/docs/nethermind-utilities/cli/clique","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/debug","path":"/docs/nethermind-utilities/cli/debug","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/diag","path":"/docs/nethermind-utilities/cli/diag","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/eth","path":"/docs/nethermind-utilities/cli/eth","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/net","path":"/docs/nethermind-utilities/cli/net","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/node","path":"/docs/nethermind-utilities/cli/node","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/parity","path":"/docs/nethermind-utilities/cli/parity","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/personal","path":"/docs/nethermind-utilities/cli/personal","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/proof","path":"/docs/nethermind-utilities/cli/proof","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/README","path":"/docs/nethermind-utilities/cli/","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/system","path":"/docs/nethermind-utilities/cli/system","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/trace","path":"/docs/nethermind-utilities/cli/trace","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/txpool","path":"/docs/nethermind-utilities/cli/txpool","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/cli/web3","path":"/docs/nethermind-utilities/cli/web3","sidebar":"tutorialSidebar"},{"id":"nethermind-utilities/pipeline","path":"/docs/nethermind-utilities/pipeline","sidebar":"tutorialSidebar"},{"id":"README","path":"/docs/","sidebar":"tutorialSidebar"},{"id":"resources/connecting-wallet","path":"/docs/resources/connecting-wallet","sidebar":"tutorialSidebar"},{"id":"resources/faq","path":"/docs/resources/faq","sidebar":"tutorialSidebar"},{"id":"resources/firewall-configuration","path":"/docs/resources/firewall-configuration","sidebar":"tutorialSidebar"},{"id":"resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack","path":"/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack","sidebar":"tutorialSidebar"},{"id":"resources/guides-and-helpers/eth2-less-than-greater-than-nethermind","path":"/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind","sidebar":"tutorialSidebar"},{"id":"resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind","path":"/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind","sidebar":"tutorialSidebar"},{"id":"resources/guides-and-helpers/validator-setup/aura-validator","path":"/docs/resources/guides-and-helpers/validator-setup/aura-validator","sidebar":"tutorialSidebar"},{"id":"resources/guides-and-helpers/validator-setup/eth2-validator","path":"/docs/resources/guides-and-helpers/validator-setup/eth2-validator","sidebar":"tutorialSidebar"},{"id":"resources/know-issues","path":"/docs/resources/know-issues","sidebar":"tutorialSidebar"},{"id":"/category/getting-started","path":"/docs/category/getting-started","sidebar":"tutorialSidebar"},{"id":"/category/fundamentals","path":"/docs/category/fundamentals","sidebar":"tutorialSidebar"},{"id":"/category/interacting-with-nethermind","path":"/docs/category/interacting-with-nethermind","sidebar":"tutorialSidebar"},{"id":"/category/monitoring","path":"/docs/category/monitoring","sidebar":"tutorialSidebar"},{"id":"/category/for-developers","path":"/docs/category/for-developers","sidebar":"tutorialSidebar"},{"id":"/category/nethermind-utilities","path":"/docs/category/nethermind-utilities","sidebar":"tutorialSidebar"},{"id":"/category/resources","path":"/docs/category/resources","sidebar":"tutorialSidebar"},{"id":"/category/contact-us","path":"/docs/category/contact-us","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/category/getting-started","label":"Getting Started"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"}}}'),c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(7961);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(c,{error:t}))}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function u(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(u,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),c=n(412);const u=a.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),S=(0,a.useContext)(u),E=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>E.current));const x=p||f;const _=(0,s.Z)(x),C=x?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&_&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),P=n?o.OL:o.rU,R=c.Z.canUseIntersectionObserver,N=(0,a.useRef)(),O=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!R&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&N.current&&N.current.disconnect()})),[N,T,R,_]);const D=T?.startsWith("#")??!1,I=!T||!_||D;return I||g||S.collectLink(T),I?a.createElement("a",(0,r.Z)({ref:E,href:T},x&&!_&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(P,(0,r.Z)({},v,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{E.current=e,R&&e&&_&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),N.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const f=a.forwardRef(p)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>p,_r:()=>u,Jo:()=>g,zh:()=>d,yW:()=>m,gB:()=>f});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},7961:(e,t,n)=>{"use strict";n.d(t,{Z:()=>dt});var r=n(7294),a=n(6010),o=n(4763),i=n(1944),l=n(7462),s=n(6550),c=n(5999),u=n(5936);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,c.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5281),b=n(9727);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:v.skipToContent})}var w=n(6668),k=n(9689);function S(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const E={closeButton:"closeButton_CVFx"};function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,c.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",E.closeButton,e.className)}),r.createElement(S,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:T.announcementBarClose}))}var L=n(3163),P=n(2466);var R=n(902),N=n(3102);const O=r.createContext(null);function D(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,N.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,R.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(O.Provider,{value:n},t)}function I(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(O);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,N.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function j(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var F=n(2949),B=n(2389);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,B.Z)(),s=(0,c.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,c.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const G=r.memo(q),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,F.I)();return a?null:r.createElement(G,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(1327);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,c.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(S,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(Y,null))}var X=n(9960),Q=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const p=(0,Q.Z)(a),f=(0,Q.Z)(t),m=(0,Q.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,c&&{width:12,height:12}))};return o?r.createElement(X.Z,(0,l.Z)({href:u?m:o},d,g)):r.createElement(X.Z,(0,l.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(6043),le=n(8596),se=n(2263);function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(xe,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),f()}}),c.children??c.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(xe,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const a=t?de:ue;return r.createElement(a,n)}var fe=n(4711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const he="iconLanguage_nlXk";var ge=n(1875);const be={searchBox:"searchBox_ZlJk"};function ve(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,be.searchBox)},t)}var ye=n(143),we=n(3438);var ke=n(373);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,s.TH)(),h=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,c.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ve,{className:n},r.createElement(ge.Z,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,we.lO)(a)[0],s=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...u}=e;const{search:d,hash:p}=(0,s.TH)(),f=(0,ye.Iw)(n),m=(0,ye.gB)(n),{savePreferredVersionName:h}=(0,ke.J)(n),g=[...o,...m.map((e=>{const t=f.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>h(e.name)}})),...i],b=(0,we.lO)(n)[0],v=t&&g.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&g.length>1?void 0:Se(b).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},u,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(pe,(0,l.Z)({},u,{mobile:t,label:v,to:y,items:g,isActive:a?()=>!1:void 0}))}};function xe(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ee[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function _e(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(xe,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ce(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(c.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Te(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Ce,{onClick:()=>t.hide()}),t.content)}function Ae(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(j,{header:r.createElement(K,null),primaryMenu:r.createElement(_e,null),secondaryMenu:r.createElement(Te,null)}):null}const Le={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Pe(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Re(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,P.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,c=window.innerHeight;l&&i>=l?n(!1):i+c<s&&n(!0)})),(0,u.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,c.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!s&&Le.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Pe,{onClick:i.toggle}),r.createElement(Ae,null))}var Ne=n(8780);const Oe={errorBoundaryError:"errorBoundaryError_a6uf"};function De(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(c.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function Ie(e){let{error:t}=e;const n=(0,Ne.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Oe.errorBoundaryError},n)}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const je="right";function Fe(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function Be(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,c.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Fe,null))}const ze={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Me,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(xe,e)))))}function $e(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function qe(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??je)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement($e,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(Be,null),r.createElement(W,null),r.createElement(Ue,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ue,{items:a}),r.createElement(Z,{className:ze.colorModeToggle}),!o&&r.createElement(ve,null,r.createElement(ge.Z,null)))})}function Ge(){return r.createElement(Re,null,r.createElement(qe,null))}function He(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,c=(0,Q.Z)(n),u=(0,Q.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(X.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?u:a}:{to:c},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ze(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(He,{item:t}))}function Ve(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ze,{key:t,item:e})))))}function We(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ve,{key:t,column:e}))))}function Ye(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Ke(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(He,{item:t})}function Xe(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Ke,{item:e}),t.length!==n+1&&r.createElement(Ye,null))))))}function Qe(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(We,{columns:t}):r.createElement(Xe,{links:t})}var Je=n(941);const et={footerLogoLink:"footerLogoLink_BH7S"};function tt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,Q.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Je.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function nt(e){let{logo:t}=e;return t.href?r.createElement(X.Z,{href:t.href,className:et.footerLogoLink,target:t.target},r.createElement(tt,{logo:t})):r.createElement(tt,{logo:t})}function rt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function ot(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(at,{style:o,links:n&&n.length>0&&r.createElement(Qe,{links:n}),logo:a&&r.createElement(nt,{logo:a}),copyright:t&&r.createElement(rt,{copyright:t})})}const it=r.memo(ot),lt=(0,R.Qc)([F.S,k.pl,P.OC,ke.L5,i.VC,function(e){let{children:t}=e;return r.createElement(N.n2,null,r.createElement(L.M,null,r.createElement(D,null,t)))}]);function st(e){let{children:t}=e;return r.createElement(lt,null,t)}function ct(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(c.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(De,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Ie,{error:t})))))}const ut={mainWrapper:"mainWrapper_z2l0"};function dt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:c}=e;return(0,b.t)(),r.createElement(st,null,r.createElement(i.d,{title:s,description:c}),r.createElement(y,null),r.createElement(A,null),r.createElement(Ge,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,ut.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(ct,e)},t)),!n&&r.createElement(it,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),c=n(941);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(c.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:c}}=(0,s.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.Z)(c?.href||"/"),h=n?"":t,g=c?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},f,c?.target&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function c(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:c,className:u,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],u)},p)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),a=n(7294),o=n(412),i=n(1442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?c:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?c:u}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const c=(0,a.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),a.createElement(t,{ref:c,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(c.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),u=()=>"true"===s.get(),d=e=>s.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&d(!1),!r&&u()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),c="theme",u=(0,i.WA)(c),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{u.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),u.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=u.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>g});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(3438),s=n(902),c=n(12);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,c.WA)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(f);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>p});var r=n(7294),a=n(3102),o=n(7524),i=n(1980),l=n(6668),s=n(902);const c=r.createContext(void 0);function u(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:s})),[e,n,u,s])}function d(e){let{children:t}=e;const n=u();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>c});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function c(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},3438:(e,t,n)=>{"use strict";n.d(t,{MN:()=>_,Wl:()=>m,_F:()=>v,cE:()=>p,hI:()=>x,jA:()=>h,lO:()=>k,oz:()=>S,s1:()=>w,vY:()=>E,xz:()=>f});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(4477),c=n(1116),u=n(7392),d=n(8596);const p=!!i._r;function f(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function h(){const{pathname:e}=(0,a.TH)(),t=(0,c.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>v(e,t)));function v(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||b(e.items,t))}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,c.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,u.j)([t,n,a].filter(Boolean))),[t,n,a])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,u.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function x(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,c=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:c}}function _(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},1980:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>l,_X:()=>s});var r=n(7294),a=n(6550),o=n(1688),i=n(902);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},7392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>u,VC:()=>f});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),c=n(2263);function u(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const u=function(e){const{siteConfig:t}=(0,c.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),l)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function f(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>c,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d,o5:()=>p});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const u=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=c(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>u});var r=n(7294),a=n(1688);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=l(t?.persistence);return null===n?c:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?c:u(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(2263),a=n(6550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),c=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var b="popstate",v="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,c=i.forceRefresh,w=void 0!==c&&c,k=i.getUserConfirmation,S=void 0===k?g:k,E=i.keyLength,x=void 0===E?6:E,_=e.basename?d(s(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=u(o,_)),f(o,r,n)}function T(){return Math.random().toString(36).substr(2,x)}var A=m();function L(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(C(e.state))}function R(){O(C(y()))}var N=!1;function O(e){if(N)N=!1,L();else{A.confirmTransitionTo(e,"POP",S,(function(t){t?L({action:"POP",location:e}):function(e){var t=U.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(N=!0,j(a))}(e)}))}}var D=C(y()),I=[D.key];function M(e){return _+p(e)}function j(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(b,P),o&&window.addEventListener(v,R)):0===F&&(window.removeEventListener(b,P),o&&window.removeEventListener(v,R))}var z=!1;var U={length:n.length,action:"POP",location:D,createHref:M,push:function(e,t){var r="PUSH",o=f(e,t,T(),U.location);A.confirmTransitionTo(o,r,S,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=I.indexOf(U.location.key),c=I.slice(0,s+1);c.push(o.key),I=c,L({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,T(),U.location);A.confirmTransitionTo(o,r,S,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=I.indexOf(U.location.key);-1!==s&&(I[s]=o.key),L({action:r,location:o})}else window.location.replace(t)}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=A.appendListener(e);return B(1),function(){B(-1),t()}}};return U}var k="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+c(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:c,decodePath:s},slash:{encodePath:s,decodePath:s}};function E(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(E(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,c=void 0===i?"slash":i,b=e.basename?d(s(e.basename)):"",v=S[c],y=v.encodePath,w=v.decodePath;function C(){var e=w(x());return b&&(e=u(e,b)),f(e)}var T=m();function A(e){(0,r.Z)(z,e),z.length=t.length,T.notifyListeners(z.location,z.action)}var L=!1,P=null;function R(){var e,t,n=x(),r=y(n);if(n!==r)_(r);else{var a=C(),i=z.location;if(!L&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===p(a))return;P=null,function(e){if(L)L=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=I.lastIndexOf(p(t));-1===n&&(n=0);var r=I.lastIndexOf(p(e));-1===r&&(r=0);var a=n-r;a&&(L=!0,M(a))}(e)}))}}(a)}}var N=x(),O=y(N);N!==O&&_(O);var D=C(),I=[p(D)];function M(e){t.go(e)}var j=0;function F(e){1===(j+=e)&&1===e?window.addEventListener(k,R):0===j&&window.removeEventListener(k,R)}var B=!1;var z={length:t.length,action:"POP",location:D,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=E(window.location.href)),n+"#"+y(b+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=y(b+t);if(x()!==a){P=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(p(z.location)),i=I.slice(0,o+1);i.push(t),I=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=y(b+t);x()!==a&&(P=t,_(a));var o=I.indexOf(p(z.location));-1!==o&&(I[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=T.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function T(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,c=void 0===s?6:s,u=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,c)}var g=T(l,0,o.length-1),b=o.map((function(e){return f(e,void 0,"string"==typeof e?h():e.key||h())})),v=p;function y(e){var t=T(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:b.length,action:"POP",location:b[g],index:g,entries:b,createHref:v,push:function(e,t){var r="PUSH",a=f(e,t,h(),w.location);u.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var b=i[g];if(!(o[b]||r&&r[b]||h&&h[b]||l&&l[b])){var v=p(n,b);try{c(t,b,v)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var c in o=Object(arguments[s]))n.call(o,c)&&(l[c]=o[c]);if(t){i=t(o);for(var u=0;u<i.length;u++)r.call(o,i[u])&&(l[i[u]]=o[i[u]])}}return l}},4779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,S="+"===y||"*"===y,E="?"===y||"*"===y,x=n[2]||u,_=b||v;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:E,repeat:S,partial:k,asterisk:!!w,pattern:_?c(_):w?".*":"[^"+s(x)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=l[u.name];if(null==p){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=s(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');o+=u.prefix+d}}else o+=u}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var c=e[l];if("string"==typeof c)i+=s(c);else{var p=s(c.prefix),f="(?:"+c.pattern+")";t.push(c),c.repeat&&(f+="(?:"+p+f+")*"),i+=f=c.optional?c.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",u(new RegExp("^"+i,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var c=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===c&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],c=r.util.type(s);"Object"!==c||o[i(s)]?"Array"!==c||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var h=f[m],g=h.inside,b=!!h.lookbehind,v=!!h.greedy,y=h.alias;if(v&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,S=l.next,E=u;S!==t.tail&&!(d&&E>=d.reach);E+=S.value.length,S=S.next){var x=S.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,C=1;if(v){if(!(_=o(k,E,e,b))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,L=E;for(L+=S.value.length;T>=L;)L+=(S=S.next).value.length;if(E=L-=S.value.length,S.value instanceof a)continue;for(var P=S;P!==t.tail&&(L<A||"string"==typeof P.value);P=P.next)C++,L+=P.value.length;C--,x=e.slice(E,L),_.index-=E}else if(!(_=o(k,0,x,b)))continue;T=_.index;var R=_[0],N=x.slice(0,T),O=x.slice(T+R.length),D=E+x.length;d&&D>d.reach&&(d.reach=D);var I=S.prev;if(N&&(I=s(t,I,N),E+=N.length),c(t,I,C),S=s(t,I,new a(p,g?r.tokenize(R,g):R,y,R)),O&&s(t,S,O),C>1){var M={cause:p+","+m,reach:D};i(e,t,n,S.prev,E,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],c=/language-(.+)/.exec(o);if(c){n=c[1];break}}var u,d=e.languages[n];if(d)t.content=e.highlight((u=t.content,u.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var p="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=p,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(p);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===u(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=u(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),a.length>0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var c=t[s];"variable"===c.type&&a.indexOf(c.content)>=0&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return!1}return!0}function p(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return u[n]=a,n})).join(""),n,r),p=Object.keys(u);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),f=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=p(l),c=l.alias,d=Array.isArray(c)?c[0]:c,f=e.languages[d];if(!f)continue;i[1]=u(s,f,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(s),m=u;a(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function c(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f=Object.prototype.hasOwnProperty,m={},h={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){b[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];b[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){b[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){b[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){b[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){b[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){b[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){b[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){b[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=b.hasOwnProperty(t)?b[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!f.call(h,e)||!f.call(m,e)&&(p.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(v,y);b[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,y);b[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,y);b[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),b.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){b[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,S=60103,E=60106,x=60107,_=60108,C=60114,T=60109,A=60110,L=60112,P=60113,R=60120,N=60115,O=60116,D=60121,I=60128,M=60129,j=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;S=B("react.element"),E=B("react.portal"),x=B("react.fragment"),_=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),A=B("react.context"),L=B("react.forward_ref"),P=B("react.suspense"),R=B("react.suspense_list"),N=B("react.memo"),O=B("react.lazy"),D=B("react.block"),B("react.scope"),I=B("react.opaque.id"),M=B("react.debug_trace_mode"),j=B("react.offscreen"),F=B("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var G=!1;function H(e,t){if(!e||G)return"";G=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{G=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Z(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=H(e.type,!1);case 11:return e=H(e.type.render,!1);case 22:return e=H(e.type._render,!1);case 1:return e=H(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case E:return"Portal";case C:return"Profiler";case _:return"StrictMode";case P:return"Suspense";case R:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case N:return V(e.type);case D:return V(e._render);case O:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=Y(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function X(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&Q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ce(e,t){var n=W(t.value),r=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ue(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function pe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ge=(he=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return he(e,t)}))}:he);function be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ve={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ve.hasOwnProperty(e)&&ve[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(ve).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ve[t]=ve[e]}))}));var Se=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ee(e,t){if(t){if(Se[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Ae=null;function Le(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Pe(e){Te?Ae?Ae.push(e):Ae=[e]:Te=e}function Re(){if(Te){var e=Te,t=Ae;if(Ae=Te=null,Le(e),t)for(e=0;e<t.length;e++)Le(t[e])}}function Ne(e,t){return e(t)}function Oe(e,t,n,r,a){return e(t,n,r,a)}function De(){}var Ie=Ne,Me=!1,je=!1;function Fe(){null===Te&&null===Ae||(De(),Re())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(he){ze=!1}function $e(e,t,n,r,a,o,i,l,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var qe=!1,Ge=null,He=!1,Ze=null,Ve={onError:function(e){qe=!0,Ge=e}};function We(e,t,n,r,a,o,i,l,s){qe=!1,Ge=null,$e.apply(Ve,arguments)}function Ye(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Xe(e){if(Ye(e)!==e)throw Error(i(188))}function Qe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Xe(a),e;if(o===r)return Xe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ct=new Map,ut=new Map,dt=[],pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function ft(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ct.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ut.delete(t.pointerId)}}function ht(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=ft(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Qt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function vt(e,t,n){bt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Qt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&bt(it)&&(it=null),null!==lt&&bt(lt)&&(lt=null),null!==st&&bt(st)&&(st=null),ct.forEach(vt),ut.forEach(vt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ct.forEach(t),ut.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function St(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Et={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},xt={},_t={};function Ct(e){if(xt[e])return xt[e];if(!Et[e])return e;var t,n=Et[e];for(t in n)if(n.hasOwnProperty(t)&&t in _t)return xt[e]=n[t];return e}d&&(_t=document.createElement("div").style,"AnimationEvent"in window||(delete Et.animationend.animation,delete Et.animationiteration.animation,delete Et.animationstart.animation),"TransitionEvent"in window||delete Et.transitionend.transition);var Tt=Ct("animationend"),At=Ct("animationiteration"),Lt=Ct("animationstart"),Pt=Ct("transitionend"),Rt=new Map,Nt=new Map,Ot=["abort","abort",Tt,"animationEnd",At,"animationIteration",Lt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Pt,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Nt.set(r,t),Rt.set(r,a),c(a,[r])}}(0,o.unstable_now)();var It=8;function Mt(e){if(0!=(1&e))return It=15,1;if(0!=(2&e))return It=14,2;if(0!=(4&e))return It=13,4;var t=24&e;return 0!==t?(It=12,t):0!=(32&e)?(It=11,32):0!==(t=192&e)?(It=10,t):0!=(256&e)?(It=9,256):0!==(t=3584&e)?(It=8,t):0!=(4096&e)?(It=7,4096):0!==(t=4186112&e)?(It=6,t):0!==(t=62914560&e)?(It=5,t):67108864&e?(It=4,67108864):0!=(134217728&e)?(It=3,134217728):0!==(t=805306368&e)?(It=2,t):0!=(1073741824&e)?(It=1,1073741824):(It=8,e)}function jt(e,t){var n=e.pendingLanes;if(0===n)return It=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=It=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=It):0!==(l&=o)&&(r=Mt(l),a=It)}else 0!==(o=n&~i)?(r=Mt(o),a=It):0!==l&&(r=Mt(l),a=It);if(0===r)return 0;if(r=n&((0>(r=31-qt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=It)return t;It=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-qt(t)),r|=e[n],t&=~a;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-qt(t)]=n}var qt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Gt(e)/Ht|0)|0},Gt=Math.log,Ht=Math.LN2;var Zt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Yt(e,t,n,r){Me||De();var a=Xt,o=Me;Me=!0;try{Oe(a,e,t,n,r)}finally{(Me=o)||Fe()}}function Kt(e,t,n,r){Vt(Zt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<ot.length&&-1<pt.indexOf(e))e=ft(null,e,t,n,r),ot.push(e);else{var o=Qt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<pt.indexOf(e))return e=ft(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=ht(it,e,t,n,r,a),!0;case"dragenter":return lt=ht(lt,e,t,n,r,a),!0;case"mouseover":return st=ht(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ct.set(o,ht(ct.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ut.set(o,ht(ut.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Dr(e,t,r,null,n)}}}function Qt(e,t,n,r){var a=_e(r);if(null!==(a=ta(a))){var o=Ye(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Dr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,cn,un,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=ln(dn),fn=a({},dn,{view:0,detail:0}),mn=ln(fn),hn=a({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==un&&(un&&"mousemove"===e.type?(sn=e.screenX-un.screenX,cn=e.screenY-un.screenY):cn=sn=0,un=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),gn=ln(hn),bn=ln(a({},hn,{dataTransfer:0})),vn=ln(a({},fn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=ln(wn),Sn=ln(a({},dn,{data:0})),En={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Tn(){return Cn}var An=a({},fn,{key:function(e){if(e.key){var t=En[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ln=ln(An),Pn=ln(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Rn=ln(a({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),Nn=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=a({},hn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Dn=ln(On),In=[9,13,27,32],Mn=d&&"CompositionEvent"in window,jn=null;d&&"documentMode"in document&&(jn=document.documentMode);var Fn=d&&"TextEvent"in window&&!jn,Bn=d&&(!Mn||jn&&8<jn&&11>=jn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==In.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Gn=!1;var Hn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Hn[e.type]:"textarea"===t}function Vn(e,t,n,r){Pe(r),0<(t=Mr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Yn=null;function Kn(e){Ar(e,0)}function Xn(e){if(X(ra(e)))return e}function Qn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Wn&&(Wn.detachEvent("onpropertychange",ar),Yn=Wn=null)}function ar(e){if("value"===e.propertyName&&Xn(Yn)){var t=[];if(Vn(t,Yn,e,_e(e)),e=Kn,Me)e(t);else{Me=!0;try{Ne(e,t)}finally{Me=!1,Fe()}}}}function or(e,t,n){"focusin"===e?(rr(),Yn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Xn(Yn)}function lr(e,t){if("click"===e)return Xn(t)}function sr(e,t){if("input"===e||"change"===e)return Xn(t)}var cr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},ur=Object.prototype.hasOwnProperty;function dr(e,t){if(cr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!ur.call(t,n[r])||!cr(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fr(e,t){var n,r=pr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=pr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=Q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Q((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var br=d&&"documentMode"in document&&11>=document.documentMode,vr=null,yr=null,wr=null,kr=!1;function Sr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==vr||vr!==Q(r)||("selectionStart"in(r=vr)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=vr)))}Dt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Dt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Dt(Ot,2);for(var Er="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Er.length;xr++)Nt.set(Er[xr],0);u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),c("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),c("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),c("onBeforeInput",["compositionend","keypress","textInput","paste"]),c("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _r="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(_r));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,c){if(We.apply(this,arguments),qe){if(!qe)throw Error(i(198));var u=Ge;qe=!1,Ge=null,He||(He=!0,Ze=u)}}(r,t,void 0,e),e.currentTarget=null}function Ar(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,c=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,c),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,c=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,c),o=s}}}if(He)throw e=Ze,He=!1,Ze=null,e}function Lr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Or(t,e,2,!1),n.add(r))}var Pr="_reactListening"+Math.random().toString(36).slice(2);function Rr(e){e[Pr]||(e[Pr]=!0,l.forEach((function(t){Cr.has(t)||Nr(t,!1,e,null),Nr(t,!0,e,null)})))}function Nr(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Or(o,e,a,t),i.add(l))}function Or(e,t,n,r){var a=Nt.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Kt;break;default:a=Xt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Dr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(je)return e(t,n);je=!0;try{return Ie(e,t,n)}finally{je=!1,Fe()}}((function(){var r=o,a=_e(n),i=[];e:{var l=Rt.get(e);if(void 0!==l){var s=pn,c=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Ln;break;case"focusin":c="focus",s=vn;break;case"focusout":c="blur",s=vn;break;case"beforeblur":case"afterblur":s=vn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Rn;break;case Tt:case At:case Lt:s=yn;break;case Pt:s=Nn;break;case"scroll":s=mn;break;case"wheel":s=Dn;break;case"copy":case"cut":case"paste":s=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Pn}var u=0!=(4&t),d=!u&&"scroll"===e,p=u?null!==l?l+"Capture":null:l;u=[];for(var f,m=r;null!==m;){var h=(f=m).stateNode;if(5===f.tag&&null!==h&&(f=h,null!==p&&(null!=(h=Be(m,p))&&u.push(Ir(m,h,f)))),d)break;m=m.return}0<u.length&&(l=new s(l,c,null,n,a),i.push({event:l,listeners:u}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(c=n.relatedTarget||n.fromElement)||!ta(c)&&!c[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(c=(c=n.relatedTarget||n.toElement)?ta(c):null)&&(c!==(d=Ye(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(s=null,c=r),s!==c)){if(u=gn,h="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=Pn,h="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==s?l:ra(s),f=null==c?l:ra(c),(l=new u(h,m+"leave",s,n,a)).target=d,l.relatedTarget=f,h=null,ta(a)===r&&((u=new u(p,m+"enter",c,n,a)).target=f,u.relatedTarget=d,h=u),d=h,s&&c)e:{for(p=c,m=0,f=u=s;f;f=jr(f))m++;for(f=0,h=p;h;h=jr(h))f++;for(;0<m-f;)u=jr(u),m--;for(;0<f-m;)p=jr(p),f--;for(;m--;){if(u===p||null!==p&&u===p.alternate)break e;u=jr(u),p=jr(p)}u=null}else u=null;null!==s&&Fr(i,l,s,u,!1),null!==c&&null!==d&&Fr(i,d,c,u,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Qn;else if(Zn(l))if(Jn)g=sr;else{g=ir;var b=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Vn(i,g,n,a):(b&&b(e,l,r),"focusout"===e&&(b=l._wrapperState)&&b.controlled&&"number"===l.type&&ae(l,"number",l.value)),b=r?ra(r):window,e){case"focusin":(Zn(b)||"true"===b.contentEditable)&&(vr=b,yr=r,wr=null);break;case"focusout":wr=yr=vr=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Sr(i,n,a);break;case"selectionchange":if(br)break;case"keydown":case"keyup":Sr(i,n,a)}var v;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Gn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Gn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Gn&&(v=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Gn=!0)),0<(b=Mr(r,y)).length&&(y=new Sn(y,e,null,n,a),i.push({event:y,listeners:b}),v?y.data=v:null!==(v=qn(n))&&(y.data=v))),(v=Fn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Gn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,Gn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new Sn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=v))}Ar(i,t)}))}function Ir(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Be(e,n))&&r.unshift(Ir(e,o,a)),null!=(o=Be(e,t))&&r.push(Ir(e,o,a))),e=e.return}return r}function jr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,c=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==c&&(l=c,a?null!=(s=Be(n,o))&&i.unshift(Ir(n,s,l)):a||null!=(s=Be(n,o))&&i.push(Ir(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function Br(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function qr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Gr="function"==typeof setTimeout?setTimeout:void 0,Hr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Yr=0;var Kr=Math.random().toString(36).slice(2),Xr="__reactFiber$"+Kr,Qr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Xr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Xr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Xr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Xr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Qr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ca(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ua(e,t){la++,ia[la]=e.current,e.current=t}var da={},pa=sa(da),fa=sa(!1),ma=da;function ha(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function ba(){ca(fa),ca(pa)}function va(e,t,n){if(pa.current!==da)throw Error(i(168));ua(pa,t),ua(fa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=pa.current,ua(pa,e),ua(fa,fa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ca(fa),ca(pa),ua(pa,e)):ca(fa),ua(fa,n)}var Sa=null,Ea=null,xa=o.unstable_runWithPriority,_a=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Aa=o.unstable_requestPaint,La=o.unstable_now,Pa=o.unstable_getCurrentPriorityLevel,Ra=o.unstable_ImmediatePriority,Na=o.unstable_UserBlockingPriority,Oa=o.unstable_NormalPriority,Da=o.unstable_LowPriority,Ia=o.unstable_IdlePriority,Ma={},ja=void 0!==Aa?Aa:function(){},Fa=null,Ba=null,za=!1,Ua=La(),$a=1e4>Ua?La:function(){return La()-Ua};function qa(){switch(Pa()){case Ra:return 99;case Na:return 98;case Oa:return 97;case Da:return 96;case Ia:return 95;default:throw Error(i(332))}}function Ga(e){switch(e){case 99:return Ra;case 98:return Na;case 97:return Oa;case 96:return Da;case 95:return Ia;default:throw Error(i(332))}}function Ha(e,t){return e=Ga(e),xa(e,t)}function Za(e,t,n){return e=Ga(e),_a(e,t,n)}function Va(){if(null!==Ba){var e=Ba;Ba=null,Ca(e)}Wa()}function Wa(){if(!za&&null!==Fa){za=!0;var e=0;try{var t=Fa;Ha(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fa=null}catch(n){throw null!==Fa&&(Fa=Fa.slice(e+1)),_a(Ra,Va),n}finally{za=!1}}}var Ya=k.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Xa=sa(null),Qa=null,Ja=null,eo=null;function to(){eo=Ja=Qa=null}function no(e){var t=Xa.current;ca(Xa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Qa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Qa)throw Error(i(308));Ja=t,Qa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function co(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function uo(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function po(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function fo(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var c=s,u=c.next;c.next=null,null===l?i=u:l.next=u,l=c;var d=e.alternate;if(null!==d){var p=(d=d.updateQueue).lastBaseUpdate;p!==l&&(null===p?d.firstBaseUpdate=u:p.next=u,d.lastBaseUpdate=c)}}if(null!==i){for(p=o.baseState,l=0,d=u=c=null;;){s=i.lane;var f=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:f,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,f=n,h.tag){case 1:if("function"==typeof(m=h.payload)){p=m.call(f,p,s);break e}p=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(f,p,s):m))break e;p=a({},p,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else f={eventTime:f,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(u=d=f,c=p):d=d.next=f,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(c=p),o.baseState=c,o.firstBaseUpdate=u,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=p}}function mo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var ho=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var bo={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ps(),a=fs(e),o=co(r,a);o.payload=t,null!=n&&(o.callback=n),uo(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ps(),a=fs(e),o=co(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),uo(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ps(),r=fs(e),a=co(n,r);a.tag=2,null!=t&&(a.callback=t),uo(e,a),ms(e,r,n)}};function vo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ma:pa.current,o=(r=null!=(r=t.contextTypes))?ha(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=bo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&bo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=ho,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ma:pa.current,a.context=ha(e,o)),fo(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&bo.enqueueReplaceState(a,a.state,null),fo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var So=Array.isArray;function Eo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===ho&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function _o(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Zs(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=Eo(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=Eo(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Xs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Ws(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case S:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=Eo(e,null,t),n.return=e,n;case E:return(t=Xs(t,e.mode,n)).return=e,t}if(So(t)||$(t))return(t=Ws(t,e.mode,n,null)).return=e,t;xo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case S:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):c(e,t,n,r):null;case E:return n.key===a?u(e,t,n,r):null}if(So(n)||$(n))return null!==a?null:d(e,t,n,r,null);xo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case S:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):c(t,e,r,a);case E:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(So(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);xo(t,r)}return null}function h(a,i,l,s){for(var c=null,u=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var b=f(a,d,l[h],s);if(null===b){null===d&&(d=g);break}e&&d&&null===b.alternate&&t(a,d),i=o(b,i,h),null===u?c=b:u.sibling=b,u=b,d=g}if(h===l.length)return n(a,d),c;if(null===d){for(;h<l.length;h++)null!==(d=p(a,l[h],s))&&(i=o(d,i,h),null===u?c=d:u.sibling=d,u=d);return c}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(a,e)})),c}function g(a,l,s,c){var u=$(s);if("function"!=typeof u)throw Error(i(150));if(null==(s=u.call(s)))throw Error(i(151));for(var d=u=null,h=l,g=l=0,b=null,v=s.next();null!==h&&!v.done;g++,v=s.next()){h.index>g?(b=h,h=null):b=h.sibling;var y=f(a,h,v.value,c);if(null===y){null===h&&(h=b);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?u=y:d.sibling=y,d=y,h=b}if(v.done)return n(a,h),u;if(null===h){for(;!v.done;g++,v=s.next())null!==(v=p(a,v.value,c))&&(l=o(v,l,g),null===d?u=v:d.sibling=v,d=v);return u}for(h=r(a,h);!v.done;g++,v=s.next())null!==(v=m(h,a,g,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),l=o(v,l,g),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach((function(e){return t(a,e)})),u}return function(e,r,o,s){var c="object"==typeof o&&null!==o&&o.type===x&&null===o.key;c&&(o=o.props.children);var u="object"==typeof o&&null!==o;if(u)switch(o.$$typeof){case S:e:{for(u=o.key,c=r;null!==c;){if(c.key===u){if(7===c.tag){if(o.type===x){n(e,c.sibling),(r=a(c,o.props.children)).return=e,e=r;break e}}else if(c.elementType===o.type){n(e,c.sibling),(r=a(c,o.props)).ref=Eo(e,c,o),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}o.type===x?((r=Ws(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Vs(o.type,o.key,o.props,null,e.mode,s)).ref=Eo(e,r,o),s.return=e,e=s)}return l(e);case E:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Xs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(So(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(u&&xo(e,o),void 0===o&&!c)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var Co=_o(!0),To=_o(!1),Ao={},Lo=sa(Ao),Po=sa(Ao),Ro=sa(Ao);function No(e){if(e===Ao)throw Error(i(174));return e}function Oo(e,t){switch(ua(Ro,t),ua(Po,e),ua(Lo,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ca(Lo),ua(Lo,t)}function Do(){ca(Lo),ca(Po),ca(Ro)}function Io(e){No(Ro.current);var t=No(Lo.current),n=fe(t,e.type);t!==n&&(ua(Po,e),ua(Lo,n))}function Mo(e){Po.current===e&&(ca(Lo),ca(Po))}var jo=sa(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=null,zo=null,Uo=!1;function $o(e,t){var n=Gs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Go(e){if(Uo){var t=zo;if(t){var n=t;if(!qo(e,t)){if(!(t=Vr(n.nextSibling))||!qo(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(Bo=e);$o(Bo,n)}Bo=e,zo=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,Bo=e}}function Ho(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Zo(e){if(e!==Bo)return!1;if(!Uo)return Ho(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!qr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Vr(t.nextSibling);if(Ho(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=Bo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){zo=Bo=null,Uo=!1}var Wo=[];function Yo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Ko=k.ReactCurrentDispatcher,Xo=k.ReactCurrentBatchConfig,Qo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Qo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Ni:Oi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Di,e=n(r,a)}while(ri)}if(Ko.current=Ri,t=null!==ei&&null!==ei.next,Qo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ci(e,t){return"function"==typeof t?t(e):t}function ui(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,c=a;do{var u=c.lane;if((Qo&u)===u)null!==s&&(s=s.next={lane:0,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),r=c.eagerReducer===e?c.eagerState:e(r,c.action);else{var d={lane:u,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=u,Ul|=u}c=c.next}while(null!==c&&c!==a);null===s?o=r:s.next=l,cr(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);cr(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Qo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function fi(e,t,n,r){var a=Ol;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Ko.current,c=s.useState((function(){return pi(a,t,n)})),u=c[1],d=c[0];c=ti;var p=e.memoizedState,f=p.refs,m=f.getSnapshot,h=p.source;p=p.subscribe;var g=Jo;return e.memoizedState={refs:f,source:t,subscribe:r},s.useEffect((function(){f.getSnapshot=n,f.setSnapshot=u;var e=o(t._source);if(!cr(l,e)){e=n(t._source),cr(d,e)||(u(e),e=fs(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-qt(i),c=1<<s;r[s]|=e,i&=~c}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var r=fs(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),cr(m,n)&&cr(h,t)&&cr(p,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:d}).dispatch=u=Pi.bind(null,Jo,e),c.queue=e,c.baseQueue=null,d=pi(a,t,n),c.memoizedState=c.baseState=d),d}function mi(e,t,n){return fi(si(),e,t,n)}function hi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:e}).dispatch=Pi.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function bi(e){return e={current:e},li().memoizedState=e}function vi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function ki(e,t){return yi(516,4,e,t)}function Si(e,t){return wi(516,4,e,t)}function Ei(e,t){return wi(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function _i(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Li(e,t){var n=qa();Ha(98>n?98:n,(function(){e(!0)})),Ha(97<n?97:n,(function(){var n=Xo.transition;Xo.transition=1;try{e(!1),t()}finally{Xo.transition=n}}))}function Pi(e,t,n){var r=ps(),a=fs(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,cr(s,l))return}catch(c){}ms(e,a,r)}}var Ri={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Ni={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:ki,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Pi.bind(null,Jo,e),[r.memoizedState,e]},useRef:bi,useState:hi,useDebugValue:Ci,useDeferredValue:function(e){var t=hi(e),n=t[0],r=t[1];return ki((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=hi(!1),t=e[0];return bi(e=Li.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:I,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Yr++).toString(36))),Error(i(355))})),n=hi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Yr++).toString(36))}),void 0,null)),t}return hi(t="r:"+(Yr++).toString(36)),t},unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Si,useImperativeHandle:_i,useLayoutEffect:Ei,useMemo:Ai,useReducer:ui,useRef:vi,useState:function(){return ui(ci)},useDebugValue:Ci,useDeferredValue:function(e){var t=ui(ci),n=t[0],r=t[1];return Si((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=ui(ci)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ui(ci)[0]},unstable_isNewReconciler:!1},Di={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Si,useImperativeHandle:_i,useLayoutEffect:Ei,useMemo:Ai,useReducer:di,useRef:vi,useState:function(){return di(ci)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ci),n=t[0],r=t[1];return Si((function(){var t=Xo.transition;Xo.transition=1;try{r(e)}finally{Xo.transition=t}}),[e]),n},useTransition:function(){var e=di(ci)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ci)[0]},unstable_isNewReconciler:!1},Ii=k.ReactCurrentOwner,Mi=!1;function ji(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Fi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,ji(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Bi(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Hs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Zs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return qi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Ss(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Ss(t,e),null;t.memoizedState={baseLanes:0},Ss(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Ss(t,r);return ji(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function qi(e,t,n,r,a){var o=ga(n)?ma:pa.current;return o=ha(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,ji(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Gi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=oo(c):c=ha(t,c=ga(n)?ma:pa.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&wo(t,i,r,c),io=!1;var p=t.memoizedState;i.state=p,fo(t,r,i,a),s=t.memoizedState,l!==r||p!==s||fa.current||io?("function"==typeof u&&(go(t,n,u,r),s=t.memoizedState),(l=io||vo(t,n,l,r,p,s,c))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:Ka(t.type,l),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ha(t,s=ga(n)?ma:pa.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&wo(t,i,r,s),io=!1,p=t.memoizedState,i.state=p,fo(t,r,i,a);var m=t.memoizedState;l!==d||p!==m||fa.current||io?("function"==typeof f&&(go(t,n,f,r),m=t.memoizedState),(c=io||vo(t,n,c,r,p,m,s))?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=c):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),r=!1)}return Hi(e,t,n,r,o,a)}function Hi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&ka(t,n,!1),ol(e,t,o);r=t.stateNode,Ii.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):ji(e,t,l,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?va(0,t.pendingContext,t.pendingContext!==t.context):t.context&&va(0,t.context,!1),Oo(e,t.containerInfo)}var Vi,Wi,Yi,Ki,Xi={dehydrated:null,retryLane:0};function Qi(e,t,n){var r,a=t.pendingProps,o=jo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ua(jo,1&o),null===e?(void 0!==a.fallback&&Go(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Xi,t.lanes=33554432,e):((n=Ys({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Xi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ys(t,a,0,null),n=Ws(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Zs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Zs(i,l),null!==e?r=Zs(e,r):(r=Ws(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(ji(e,t,r.children,n),0!=(2&(r=jo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ua(jo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Fo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Uo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&ba(),null;case 3:return Do(),ca(fa),ca(pa),Yo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Wi(t),null;case 5:Mo(t);var o=No(Ro.current);if(n=t.type,null!==e&&null!=t.stateNode)Yi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=No(Lo.current),Zo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Xr]=t,r[Qr]=l,n){case"dialog":Lr("cancel",r),Lr("close",r);break;case"iframe":case"object":case"embed":Lr("load",r);break;case"video":case"audio":for(e=0;e<_r.length;e++)Lr(_r[e],r);break;case"source":Lr("error",r);break;case"img":case"image":case"link":Lr("error",r),Lr("load",r);break;case"details":Lr("toggle",r);break;case"input":ee(r,l),Lr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Lr("invalid",r);break;case"textarea":se(r,l),Lr("invalid",r)}for(var c in Ee(n,l),e=null,l)l.hasOwnProperty(c)&&(o=l[c],"children"===c?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(c)&&null!=o&&"onScroll"===c&&Lr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ue(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(c=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=pe(n)),e===de.html?"script"===n?((e=c.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=c.createElement(n,{is:r.is}):(e=c.createElement(n),"select"===n&&(c=e,r.multiple?c.multiple=!0:r.size&&(c.size=r.size))):e=c.createElementNS(e,n),e[Xr]=t,e[Qr]=r,Vi(e,t,!1,!1),t.stateNode=e,c=xe(n,r),n){case"dialog":Lr("cancel",e),Lr("close",e),o=r;break;case"iframe":case"object":case"embed":Lr("load",e),o=r;break;case"video":case"audio":for(o=0;o<_r.length;o++)Lr(_r[o],e);o=r;break;case"source":Lr("error",e),o=r;break;case"img":case"image":case"link":Lr("error",e),Lr("load",e),o=r;break;case"details":Lr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Lr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Lr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Lr("invalid",e);break;default:o=r}Ee(n,o);var u=o;for(l in u)if(u.hasOwnProperty(l)){var d=u[l];"style"===l?ke(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Lr("scroll",e):null!=d&&w(e,l,d,c))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ue(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Br)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=No(Ro.current),No(Lo.current),Zo(t)?(r=t.stateNode,n=t.memoizedProps,r[Xr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Xr]=t,t.stateNode=r)}return null;case 13:return ca(jo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&jo.current)?0===Fl&&(Fl=3):(0!==Fl&&3!==Fl||(Fl=4),null===Ol||0==(134217727&Ul)&&0==(134217727&$l)||vs(Ol,Il))),(r||n)&&(t.flags|=4),null);case 4:return Do(),Wi(t),null===e&&Rr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ca(jo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(c=r.rendering))if(l)il(r,!1);else{if(0!==Fl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(c=Fo(e))){for(t.flags|=64,il(r,!1),null!==(l=c.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(c=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=c.childLanes,l.lanes=c.lanes,l.child=c.child,l.memoizedProps=c.memoizedProps,l.memoizedState=c.memoizedState,l.updateQueue=c.updateQueue,l.type=c.type,e=c.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ua(jo,1&jo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Zl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Fo(c))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!c.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Zl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(c.sibling=t.child,t.child=c):(null!==(n=r.last)?n.sibling=c:t.child=c,r.last=c)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=jo.current,ua(jo,l?1&t|2:1&t),n):null;case 23:case 24:return Es(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&ba();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Do(),ca(fa),ca(pa),Yo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ca(jo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ca(jo),null;case 4:return Do(),null;case 10:return no(e),null;case 23:case 24:return Es(),null;default:return null}}function cl(e,t){try{var n="",r=t;do{n+=Z(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function ul(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(){},Yi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,No(Lo.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in Ee(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var c=o[d];for(i in c)c.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var u=r[d];if(c=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&u!==c&&(null!=u||null!=c))if("style"===d)if(c){for(i in c)!c.hasOwnProperty(i)||u&&u.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in u)u.hasOwnProperty(i)&&c[i]!==u[i]&&(n||(n={}),n[i]=u[i])}else n||(l||(l=[]),l.push(d,n)),n=u;else"dangerouslySetInnerHTML"===d?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(l=l||[]).push(d,u)):"children"===d?"string"!=typeof u&&"number"!=typeof u||(l=l||[]).push(d,""+u):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=u&&"onScroll"===d&&Lr("scroll",e),l||c===u||(l=[])):"object"==typeof u&&null!==u&&u.$$typeof===I?u.toString():(l=l||[]).push(d,u))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function pl(e,t,n){(n=co(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Xl=r),ul(0,t)},n}function fl(e,t,n){(n=co(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return ul(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Ql?Ql=new Set([this]):Ql.add(this),ul(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function bl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(js(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(i(163))}function vl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(Ea&&"function"==typeof Ea.onCommitFiberUnmount)try{Ea.onCommitFiberUnmount(Sa,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))js(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:hl(t);break;case 4:_l(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function Sl(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?El(e,n,t):xl(e,n,t)}function El(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(El(e,t,n),e=e.sibling;null!==e;)El(e,t,n),e=e.sibling}function xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function _l(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,c=s;;)if(yl(l,c),null!==c.child&&4!==c.tag)c.child.return=c,c=c.child;else{if(c===s)break e;for(;null===c.sibling;){if(null===c.return||c.return===s)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Qr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,a),t=xe(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?ke(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?be(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ce(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Hl=$a(),vl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void vl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ll=Math.ceil,Pl=k.ReactCurrentDispatcher,Rl=k.ReactCurrentOwner,Nl=0,Ol=null,Dl=null,Il=0,Ml=0,jl=sa(0),Fl=0,Bl=null,zl=0,Ul=0,$l=0,ql=0,Gl=null,Hl=0,Zl=1/0;function Vl(){Zl=$a()+500}var Wl,Yl=null,Kl=!1,Xl=null,Ql=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,cs=0,us=null,ds=!1;function ps(){return 0!=(48&Nl)?$a():-1!==ls?ls:ls=$a()}function fs(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===qa()?1:2;if(0===ss&&(ss=zl),0!==Ya.transition){0!==cs&&(cs=null!==Gl?Gl.pendingLanes:0),e=ss;var t=4186112&~cs;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=qa(),0!=(4&Nl)&&98===e?e=Bt(12,ss):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;$t(e,t,n),e===Ol&&($l|=t,4===Fl&&vs(e,Il));var r=qa();1===t?0!=(8&Nl)&&0==(48&Nl)?ys(e):(gs(e,n),0===Nl&&(Vl(),Va())):(0==(4&Nl)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Gl=e}function hs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-qt(l),c=1<<s,u=o[s];if(-1===u){if(0==(c&r)||0!=(c&a)){u=t,Mt(c);var d=It;o[s]=10<=d?u+250:6<=d?u+5e3:-1}}else u<=t&&(e.expiredLanes|=c);l&=~c}if(r=jt(e,e===Ol?Il:0),t=It,0===r)null!==n&&(n!==Ma&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ca(n)}15===t?(n=ys.bind(null,e),null===Fa?(Fa=[n],Ba=_a(Ra,Wa)):Fa.push(n),n=Ma):14===t?n=Za(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Za(n,bs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function bs(e){if(ls=-1,cs=ss=0,0!=(48&Nl))throw Error(i(327));var t=e.callbackNode;if(Is()&&e.callbackNode!==t)return null;var n=jt(e,e===Ol?Il:0);if(0===n)return null;var r=n,a=Nl;Nl|=16;var o=Cs();for(Ol===e&&Il===r||(Vl(),xs(e,r));;)try{Ls();break}catch(s){_s(e,s)}if(to(),Pl.current=o,Nl=a,null!==Dl?r=0:(Ol=null,Il=0,r=Fl),0!=(zl&$l))xs(e,0);else if(0!==r){if(2===r&&(Nl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Ft(e))&&(r=Ts(e,n))),1===r)throw t=Bl,xs(e,0),vs(e,n),gs(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ns(e);break;case 3:if(vs(e,n),(62914560&n)===n&&10<(r=Hl+500-$a())){if(0!==jt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){ps(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Gr(Ns.bind(null,e),r);break}Ns(e);break;case 4:if(vs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-qt(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ll(n/1960))-n)){e.timeoutHandle=Gr(Ns.bind(null,e),n);break}Ns(e);break;default:throw Error(i(329))}}return gs(e,$a()),e.callbackNode===t?bs.bind(null,e):null}function vs(e,t){for(t&=~ql,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-qt(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Nl))throw Error(i(327));if(Is(),e===Ol&&0!=(e.expiredLanes&Il)){var t=Il,n=Ts(e,t);0!=(zl&$l)&&(n=Ts(e,t=jt(e,t)))}else n=Ts(e,t=jt(e,0));if(0!==e.tag&&2===n&&(Nl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Ft(e))&&(n=Ts(e,t))),1===n)throw n=Bl,xs(e,0),vs(e,t),gs(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ns(e),gs(e,$a()),null}function ws(e,t){var n=Nl;Nl|=1;try{return e(t)}finally{0===(Nl=n)&&(Vl(),Va())}}function ks(e,t){var n=Nl;Nl&=-2,Nl|=8;try{return e(t)}finally{0===(Nl=n)&&(Vl(),Va())}}function Ss(e,t){ua(jl,Ml),Ml|=t,zl|=t}function Es(){Ml=jl.current,ca(jl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Hr(n)),null!==Dl)for(n=Dl.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ba();break;case 3:Do(),ca(fa),ca(pa),Yo();break;case 5:Mo(r);break;case 4:Do();break;case 13:case 19:ca(jo);break;case 10:no(r);break;case 23:case 24:Es()}n=n.return}Ol=e,Dl=Zs(e.current,null),Il=Ml=zl=t,Fl=0,Bl=null,ql=$l=Ul=0}function _s(e,t){for(;;){var n=Dl;try{if(to(),Ko.current=Ri,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Qo=0,ti=ei=Jo=null,ri=!1,Rl.current=null,null===n||null===n.return){Fl=1,Bl=t,Dl=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Il,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var c=s;if(0==(2&l.mode)){var u=l.alternate;u?(l.updateQueue=u.updateQueue,l.memoizedState=u.memoizedState,l.lanes=u.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&jo.current),p=i;do{var f;if(f=13===p.tag){var m=p.memoizedState;if(null!==m)f=null!==m.dehydrated;else{var h=p.memoizedProps;f=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(f){var g=p.updateQueue;if(null===g){var b=new Set;b.add(c),p.updateQueue=b}else g.add(c);if(0==(2&p.mode)){if(p.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var v=co(-1,1);v.tag=2,uo(l,v)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(c,s)):void 0===(s=y.get(c))&&(s=new Set,y.set(c,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,c,l);c.then(w,w)}p.flags|=4096,p.lanes=t;break e}p=p.return}while(null!==p);s=Error((V(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fl&&(Fl=2),s=cl(s,l),p=i;do{switch(p.tag){case 3:o=s,p.flags|=4096,t&=-t,p.lanes|=t,po(p,pl(0,o,t));break e;case 1:o=s;var k=p.type,S=p.stateNode;if(0==(64&p.flags)&&("function"==typeof k.getDerivedStateFromError||null!==S&&"function"==typeof S.componentDidCatch&&(null===Ql||!Ql.has(S)))){p.flags|=4096,t&=-t,p.lanes|=t,po(p,fl(p,o,t));break e}}p=p.return}while(null!==p)}Rs(n)}catch(E){t=E,Dl===n&&null!==n&&(Dl=n=n.return);continue}break}}function Cs(){var e=Pl.current;return Pl.current=Ri,null===e?Ri:e}function Ts(e,t){var n=Nl;Nl|=16;var r=Cs();for(Ol===e&&Il===t||xs(e,t);;)try{As();break}catch(a){_s(e,a)}if(to(),Nl=n,Pl.current=r,null!==Dl)throw Error(i(261));return Ol=null,Il=0,Fl}function As(){for(;null!==Dl;)Ps(Dl)}function Ls(){for(;null!==Dl&&!Ta();)Ps(Dl)}function Ps(e){var t=Wl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Rs(e):Dl=t,Rl.current=null}function Rs(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Dl=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Dl=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Dl=t);Dl=t=e}while(null!==t);0===Fl&&(Fl=5)}function Ns(e){var t=qa();return Ha(99,Os.bind(null,e,t)),null}function Os(e,t){do{Is()}while(null!==es);if(0!=(48&Nl))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var c=31-qt(o),u=1<<c;a[c]=0,l[c]=-1,s[c]=-1,o&=~u}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Ol&&(Dl=Ol=null,Il=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Nl,Nl|=32,Rl.current=null,zr=Wt,gr(l=hr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(u=s.getSelection&&s.getSelection())&&0!==u.rangeCount){s=u.anchorNode,o=u.anchorOffset,c=u.focusNode,u=u.focusOffset;try{s.nodeType,c.nodeType}catch(C){s=null;break e}var d=0,p=-1,f=-1,m=0,h=0,g=l,b=null;t:for(;;){for(var v;g!==s||0!==o&&3!==g.nodeType||(p=d+o),g!==c||0!==u&&3!==g.nodeType||(f=d+u),3===g.nodeType&&(d+=g.nodeValue.length),null!==(v=g.firstChild);)b=g,g=v;for(;;){if(g===l)break t;if(b===s&&++m===o&&(p=d),b===c&&++h===u&&(f=d),null!==(v=g.nextSibling))break;b=(g=b).parentNode}g=v}s=-1===p||-1===f?null:{start:p,end:f}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Wt=!1,us=null,ds=!1,Yl=r;do{try{Ds()}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);us=null,Yl=r;do{try{for(l=e;null!==Yl;){var y=Yl.flags;if(16&y&&be(Yl.stateNode,""),128&y){var w=Yl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:Sl(Yl),Yl.flags&=-3;break;case 6:Sl(Yl),Yl.flags&=-3,Cl(Yl.alternate,Yl);break;case 1024:Yl.flags&=-1025;break;case 1028:Yl.flags&=-1025,Cl(Yl.alternate,Yl);break;case 4:Cl(Yl.alternate,Yl);break;case 8:_l(l,s=Yl);var S=s.alternate;wl(s),null!==S&&wl(S)}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);if(k=Ur,w=hr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,S=Math.min(l.start,s),l=void 0===l.end?S:Math.min(l.end,s),!k.extend&&S>l&&(s=l,l=S,S=s),s=fr(y,S),o=fr(y,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),S>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!zr,Ur=zr=null,e.current=n,Yl=r;do{try{for(y=e;null!==Yl;){var E=Yl.flags;if(36&E&&bl(y,Yl.alternate,Yl),128&E){w=void 0;var x=Yl.ref;if(null!==x){var _=Yl.stateNode;Yl.tag,w=_,"function"==typeof x?x(w):x.current=w}}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);Yl=null,ja(),Nl=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Yl=r;null!==Yl;)t=Yl.nextEffect,Yl.nextEffect=null,8&Yl.flags&&((E=Yl).sibling=null,E.stateNode=null),Yl=t;if(0===(r=e.pendingLanes)&&(Ql=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Ea&&"function"==typeof Ea.onCommitFiberRoot)try{Ea.onCommitFiberRoot(Sa,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,$a()),Kl)throw Kl=!1,e=Xl,Xl=null,e;return 0!=(8&Nl)||Va(),null}function Ds(){for(;null!==Yl;){var e=Yl.alternate;ds||null===us||(0!=(8&Yl.flags)?Je(Yl,us)&&(ds=!0):13===Yl.tag&&Al(e,Yl)&&Je(Yl,us)&&(ds=!0));var t=Yl.flags;0!=(256&t)&&gl(e,Yl),0==(512&t)||Jl||(Jl=!0,Za(97,(function(){return Is(),null}))),Yl=Yl.nextEffect}}function Is(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ha(e,Fs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Is(),null})))}function js(e,t){rs.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Is(),null})))}function Fs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Nl))throw Error(i(331));var t=Nl;Nl|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(c){if(null===o)throw Error(i(330));zs(o,c)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(c){if(null===o)throw Error(i(330));zs(o,c)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Nl=t,Va(),!0}function Bs(e,t,n){uo(e,t=pl(0,t=cl(n,t),1)),t=ps(),null!==(e=hs(e,1))&&($t(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Ql||!Ql.has(r))){var a=fl(n,e=cl(t,e),1);if(uo(n,a),a=ps(),null!==(n=hs(n,1)))$t(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Ql||!Ql.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ps(),e.pingedLanes|=e.suspendedLanes&n,Ol===e&&(Il&n)===n&&(4===Fl||3===Fl&&(62914560&Il)===Il&&500>$a()-Hl?xs(e,0):ql|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===qa()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=ps(),null!==(e=hs(e,t))&&($t(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Gs(e,t,n,r){return new qs(e,t,n,r)}function Hs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Zs(e,t){var n=e.alternate;return null===n?((n=Gs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Hs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Ws(n.children,a,o,t);case M:l=8,a|=16;break;case _:l=8,a|=1;break;case C:return(e=Gs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case P:return(e=Gs(13,n,t,a)).type=P,e.elementType=P,e.lanes=o,e;case R:return(e=Gs(19,n,t,a)).elementType=R,e.lanes=o,e;case j:return Ys(n,a,o,t);case F:return(e=Gs(24,n,t,a)).elementType=F,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case A:l=9;break e;case L:l=11;break e;case N:l=14;break e;case O:l=16,r=null;break e;case D:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Gs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ws(e,t,n,r){return(e=Gs(7,e,r,t)).lanes=n,e}function Ys(e,t,n,r){return(e=Gs(23,e,r,t)).elementType=j,e.lanes=n,e}function Ks(e,t,n){return(e=Gs(6,e,null,t)).lanes=n,e}function Xs(e,t,n){return(t=Gs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Qs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=ps(),l=fs(a);e:if(n){t:{if(Ye(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var c=n.type;if(ga(c)){n=ya(n,c,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=co(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),uo(a,t),ms(a,l,o),l}function ec(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nc(e,t){tc(e,t),(e=e.alternate)&&tc(e,t)}function rc(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Qs(e,t,null!=n&&!0===n.hydrate),t=Gs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Rr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function ac(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function oc(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=ec(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new rc(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=ec(i);s.call(e)}}ks((function(){Js(t,i,e,a)}))}return ec(i)}function ic(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ac(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:E,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Vo();break;case 5:Io(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Oo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ua(Xa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Qi(e,t,n):(ua(jo,1&jo.current),null!==(t=ol(e,t,n))?t.sibling:null);ua(jo,1&jo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ua(jo,jo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ha(t,pa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=bo,t.stateNode=a,a._reactInternals=t,ko(t,r,e,n),t=Hi(null,t,r,!0,o,n)}else t.tag=0,ji(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Hs(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===N)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=qi(null,t,a,e,n);break e;case 1:t=Gi(null,t,a,e,n);break e;case 11:t=Fi(null,t,a,e,n);break e;case 14:t=Bi(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,Gi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),fo(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Vr(t.stateNode.containerInfo.firstChild),Bo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else ji(e,t,r,n),Vo();t=t.child}return t;case 5:return Io(t),null===e&&Go(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,qr(r,a)?l=null:null!==o&&qr(r,o)&&(t.flags|=16),$i(e,t),ji(e,t,l,n),t.child;case 6:return null===e&&Go(t),null;case 13:return Qi(e,t,n);case 4:return Oo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):ji(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Fi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return ji(e,t,t.pendingProps,n),t.child;case 8:case 12:return ji(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ua(Xa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=cr(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!fa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var c=s.dependencies;if(null!==c){l=s.child;for(var u=c.firstContext;null!==u;){if(u.context===r&&0!=(u.observedBits&o)){1===s.tag&&((u=co(-1,n&-n)).tag=2,uo(s,u)),s.lanes|=n,null!==(u=s.alternate)&&(u.lanes|=n),ro(s.return,n),c.lanes|=n;break}u=u.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}ji(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,ji(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),Bi(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),ko(t,r,a,n),Hi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},rc.prototype.render=function(e){Js(e,this._internalRoot,null,null)},rc.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ms(e,4,ps()),nc(e,4))},tt=function(e){13===e.tag&&(ms(e,67108864,ps()),nc(e,67108864))},nt=function(e){if(13===e.tag){var t=ps(),n=fs(e);ms(e,n,t),nc(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));X(r),ne(r,a)}}}break;case"textarea":ce(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ne=ws,Oe=function(e,t,n,r,a){var o=Nl;Nl|=4;try{return Ha(98,e.bind(null,t,n,r,a))}finally{0===(Nl=o)&&(Vl(),Va())}},De=function(){0==(49&Nl)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,$a())}))}Va()}(),Is())},Ie=function(e,t){var n=Nl;Nl|=2;try{return e(t)}finally{0===(Nl=n)&&(Vl(),Va())}};var lc={Events:[na,ra,aa,Pe,Re,Is,{current:!1}]},sc={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},cc={bundleType:sc.bundleType,version:sc.version,rendererPackageName:sc.rendererPackageName,rendererConfig:sc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Qe(e))?null:e.stateNode},findFiberByHostInstance:sc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var uc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!uc.isDisabled&&uc.supportsFiber)try{Sa=uc.inject(cc),Ea=uc}catch(he){}}t.hydrate=function(e,t,n){if(!ac(t))throw Error(i(200));return oc(null,e,t,!0,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,c,u;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;for(u=e.entries();!(s=u.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,c[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==c[s]&&"__v"!==c[s]&&"__o"!==c[s]||!e.$$typeof)&&!o(e[c[s]],i[c[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>H,ql:()=>J});var r=n(7294),a=n(5697),o=n.n(a),i=n(9590),l=n.n(i),s=n(1143),c=n.n(s),u=n(6774),d=n.n(u);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},S=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),E=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=E(e,g.TITLE),n=E(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=E(e,"defaultTitle");return t||r||void 0},_=function(e){return E(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var c=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][c]&&(a[n][c]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=p({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},L=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},R=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},N=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},O=[g.NOSCRIPT,g.SCRIPT,g.STYLE],D=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},j=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+D(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+D(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return j(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+D(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=R(e.metaTags,y),o=R(t,b),i=R(n,v);return{priorityMethods:{toComponent:function(){return[].concat(j(g.META,a.priority),j(g.LINK,o.priority),j(g.SCRIPT,i.priority))},toString:function(){return F(g.META,a.priority,r)+" "+F(g.LINK,o.priority,r)+" "+F(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=m.priorityMethods,u=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(g.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(g.LINK,u,r),meta:F(g.META,d,r),noscript:F(g.NOSCRIPT,o,r),script:F(g.SCRIPT,p,r),style:F(g.STYLE,i,r),title:F(g.TITLE,{title:s,titleAttributes:c},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),G="undefined"!=typeof document,H=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);H.canUseDOM=G,H.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},H.defaultProps={context:{}},H.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],c=t[s]||"";n.getAttribute(s)!==c&&n.setAttribute(s,c),-1===a.indexOf(s)&&a.push(s);var u=o.indexOf(s);-1!==u&&o.splice(u,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),V(g.TITLE,t)}(u,d);var p={baseTag:Z(g.BASE,n),linkTags:Z(g.LINK,a),metaTags:Z(g.META,o),noscriptTags:Z(g.NOSCRIPT,i),scriptTags:Z(g.SCRIPT,s),styleTags:Z(g.STYLE,c)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,f,m)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:E(e,"defer"),encode:E(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:x(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});H.canUseDOM?(t=o,Y&&cancelAnimationFrame(Y),t.defer?Y=requestAnimationFrame((function(){W(t,(function(){Y=null}))})):(W(t),Y=null)):B&&(a=B(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var X=["children"],Q=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(N(this.props,"helmetData"),N(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case g.BODY:return p({},a,{bodyAttributes:p({},o)});case g.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=h(r,X),l=Object.keys(i).reduce((function(e,t){return e[S[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,Q),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,p({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,p({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case g:case h:case s:return e;default:return t}}case a:return t}}}function S(e){return k(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return S(e)||k(e)===u},t.isConcurrentMode=S,t.isContextConsumer=function(e){return k(e)===c},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===y||e.$$typeof===w||e.$$typeof===b)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7294),s=n(5697),c=[],u=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return c.push(g),"function"==typeof m.webpack&&u.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),p=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),p}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){b(c).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){b(u).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6550),a=n(7462),o=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>u,rU:()=>g});var r=n(6550),a=n(5068),o=n(7294),i=n(9318),l=n(7462),s=n(3366),c=n(8776),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},f=function(e){return e},m=o.forwardRef;void 0===m&&(m=f);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=f!==m&&t||n,o.createElement("a",u)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,u=e.replace,g=e.to,b=e.innerRef,v=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,c.Z)(!1);var n=e.history,r=p(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},v,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(p(t));(u||r?n.replace:n.push)(t)}});return f!==m?h.ref=t||b:h.innerRef=b,o.createElement(a,h)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var y=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,u=void 0===i?"active":i,f=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,S=e.strict,E=e.style,x=e.to,_=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,c.Z)(!1);var n=w||e.location,i=p(d(x,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,r.LX)(n.pathname,{path:T,exact:h,sensitive:k,strict:S}):null,L=!!(y?y(A,n):A),P="function"==typeof m?m(L):m,R="function"==typeof E?E(L):E;L&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(P,u),R=(0,l.Z)({},R,f));var N=(0,l.Z)({"aria-current":L&&a||null,className:P,style:R,to:i},C);return b!==v?N.ref=t||_:N.innerRef=_,o.createElement(g,N)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>y,LX:()=>E,TH:()=>O,k6:()=>N,rs:()=>P,s6:()=>v});var r=n(5068),a=n(7294),o=n(5697),i=n.n(o),l=n(9318),s=n(8776),c=n(7462),u=n(4779),d=n.n(u),p=(n(9864),n(3366)),f=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var c=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return c.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:c}},g=function(e){var t=h();return t.displayName=e,t},b=g("Router-History"),v=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(b.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,S=0;function E(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,c=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return S<k&&(r[e]=o,S++),o}(n,{end:o,strict:l,sensitive:c}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var u=s[0],p=s.slice(1),f=e===u;return o&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(v.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?E(n.pathname,e.props):t.match,o=(0,c.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,u=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(v.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:u?a.createElement(u,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,c.Z)({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:(0,l.Ep)(e)}function A(e){return function(){(0,s.Z)(!1)}}function L(){}a.Component;var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(v.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?E(o.pathname,(0,c.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var R=a.useContext;function N(){return R(b)}function O(){return R(v).location}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var c=60115,u=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),c=d("react.memo"),u=d("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function f(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=g.prototype;var y=v.prototype=new b;y.constructor=v,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,S={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!S.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var c=Array(s),u=0;u<s;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var _=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(_,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var c=0;c<e.length;c++){var u=r+C(l=e[c],c);s+=T(l,t,n,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,u=r+C(l,c++),i);else if("object"===l)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function A(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var P={current:null};function R(){var e=P.current;if(null===e)throw Error(f(321));return e}var N={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(f(143));return e}},t.Component=g,t.PureComponent=v,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=N,t.cloneElement=function(e,t,n){if(null==e)throw Error(f(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)k.call(t,u)&&!S.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];o.children=c}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=E,t.createFactory=function(e){var t=E.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:u,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:c,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return R().useCallback(e,t)},t.useContext=function(e,t){return R().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return R().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return R().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return R().useLayoutEffect(e,t)},t.useMemo=function(e,t){return R().useMemo(e,t)},t.useReducer=function(e,t,n){return R().useReducer(e,t,n)},t.useRef=function(e){return R().useRef(e)},t.useState=function(e){return R().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var c=null,u=null,d=function(){if(null!==c)try{var e=t.unstable_now();c(!0,e),c=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==c?setTimeout(n,0,e):(c=e,setTimeout(d,0))},r=function(e,t){u=setTimeout(e,t)},a=function(){clearTimeout(u)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,f=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,b=-1,v=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):v=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+v;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){b=p((function(){e(t.unstable_now())}),n)},a=function(){f(b),b=-1}}function S(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<_(a,t)))break e;e[r]=t,e[n]=a,n=r}}function E(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>_(i,n))void 0!==s&&0>_(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>_(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],A=1,L=null,P=3,R=!1,N=!1,O=!1;function D(e){for(var t=E(T);null!==t;){if(null===t.callback)x(T);else{if(!(t.startTime<=e))break;x(T),t.sortIndex=t.expirationTime,S(C,t)}t=E(T)}}function I(e){if(O=!1,D(e),!N)if(null!==E(C))N=!0,n(M);else{var t=E(T);null!==t&&r(I,t.startTime-e)}}function M(e,n){N=!1,O&&(O=!1,a()),R=!0;var o=P;try{for(D(n),L=E(C);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=L.callback;if("function"==typeof i){L.callback=null,P=L.priorityLevel;var l=i(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===E(C)&&x(C),D(n)}else x(C);L=E(C)}if(null!==L)var s=!0;else{var c=E(T);null!==c&&r(I,c.startTime-n),s=!1}return s}finally{L=null,P=o,R=!1}}var j=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){N||R||(N=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return P},t.unstable_getFirstCallbackNode=function(){return E(C)},t.unstable_next=function(e){switch(P){case 1:case 2:case 3:var t=3;break;default:t=P}var n=P;P=t;try{return e()}finally{P=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=j,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=P;P=e;try{return t()}finally{P=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,S(T,e),null===E(C)&&e===E(T)&&(O?a():O=!0,r(I,i-l))):(e.sortIndex=s,S(C,e),N||R||(N=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=P;return function(){var n=P;P=t;try{return e.apply(this,arguments)}finally{P=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var c=o[s];if(!l(c))return!1;var u=e[c],d=t[c];if(!1===(a=n?n.call(r,u,d,c):void 0)||void 0===a&&u!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,u=r[1];return l((function(){a.value=n,a.getSnapshot=t,c(a)&&u({inst:a})}),[e,n,t]),i((function(){return c(a)&&u({inst:a}),e((function(){c(a)&&u({inst:a})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},1688:(e,t,n)=>{"use strict";e.exports=n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Nethermind Documentation",tagline:"Welcome to Nethermind: Your High-Performance Gateway to the Ethereum Network",url:"https://docs.nethermind.io",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.ico",organizationName:"NethermindEth",projectName:"docs",trailingSlash:!1,i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"/home/runner/work/docs/docs/sidebars.js",editUrl:"https://github.com/NethermindEth/docs/tree/main/docs/"},theme:{customCss:"/home/runner/work/docs/docs/src/css/custom.css"}}]],themeConfig:{navbar:{title:"Nethermind",items:[{href:"https://github.com/NethermindEth/nethermind",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Docs",items:[{label:"Docs",to:"/docs"}]},{title:"Community",items:[{label:"Discord",href:"https://discord.com/invite/PaCMRFdvWT"},{label:"Twitter",href:"https://twitter.com/nethermindeth"}]},{title:"More",items:[{label:"GitHub",href:"https://github.com/NethermindEth/nethermind"}]}],copyright:"Copyright \xa9 2023 Nethermind. Built with Docusaurus."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/blog-588":{"__comp":"a6aa9e1f","__context":{"plugin":"1c091541"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"metadata":"b2b675dd"},"/blog/archive-d5c":{"__comp":"9e4087bc","__context":{"plugin":"1c091541"},"archive":"b2f554cd"},"/blog/first-blog-post-664":{"__comp":"ccc49370","__context":{"plugin":"1c091541"},"sidebar":"814f3328","content":"e273c56f"},"/blog/long-blog-post-689":{"__comp":"ccc49370","__context":{"plugin":"1c091541"},"sidebar":"814f3328","content":"73664a40"},"/blog/mdx-blog-post-c99":{"__comp":"ccc49370","__context":{"plugin":"1c091541"},"sidebar":"814f3328","content":"59362658"},"/blog/tags-e00":{"__comp":"01a85c17","__context":{"plugin":"1c091541"},"sidebar":"814f3328","tags":"a7023ddc"},"/blog/tags/docusaurus-cfa":{"__comp":"6875c492","__context":{"plugin":"1c091541"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"tag":"a80da1cf","listMetadata":"608ae6a4"},"/blog/tags/facebook-5d1":{"__comp":"6875c492","__context":{"plugin":"1c091541"},"sidebar":"814f3328","items":[{"content":"7661071f"}],"tag":"031793e1","listMetadata":"096bfee4"},"/blog/tags/hello-24f":{"__comp":"6875c492","__context":{"plugin":"1c091541"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"8717b14a"}],"tag":"30a24c52","listMetadata":"66406991"},"/blog/tags/hola-368":{"__comp":"6875c492","__context":{"plugin":"1c091541"},"sidebar":"814f3328","items":[{"content":"925b3f96"}],"tag":"e16015ca","listMetadata":"4c9e35b1"},"/blog/welcome-5d4":{"__comp":"ccc49370","__context":{"plugin":"1c091541"},"sidebar":"814f3328","content":"d9f32620"},"/markdown-page-9d5":{"__comp":"1f391b9e","__context":{"plugin":"a7434565"},"content":"393be207"},"/docs-f47":{"__comp":"1be78505","__context":{"plugin":"247783bb"},"versionMetadata":"935f2afb"},"/docs-74a":{"__comp":"17896441","content":"23374ca6"},"/docs/category/contact-us-aa9":{"__comp":"14eb3368","categoryGeneratedIndex":"84d60698"},"/docs/category/for-developers-521":{"__comp":"14eb3368","categoryGeneratedIndex":"c0d97a59"},"/docs/category/fundamentals-85a":{"__comp":"14eb3368","categoryGeneratedIndex":"252529aa"},"/docs/category/getting-started-01f":{"__comp":"14eb3368","categoryGeneratedIndex":"3152febb"},"/docs/category/interacting-with-nethermind-0a4":{"__comp":"14eb3368","categoryGeneratedIndex":"84eaa0d0"},"/docs/category/monitoring-f80":{"__comp":"14eb3368","categoryGeneratedIndex":"9cf795e3"},"/docs/category/nethermind-utilities-943":{"__comp":"14eb3368","categoryGeneratedIndex":"2b9f830c"},"/docs/category/resources-0c2":{"__comp":"14eb3368","categoryGeneratedIndex":"bf8bff70"},"/docs/contact-23f":{"__comp":"17896441","content":"d999088d"},"/docs/for-developers/building-nethermind-9fd":{"__comp":"17896441","content":"35e5a526"},"/docs/for-developers/coding-style-b00":{"__comp":"17896441","content":"addfe087"},"/docs/for-developers/custom-analytic-tools-b4b":{"__comp":"17896441","content":"dd2f7272"},"/docs/for-developers/plugins-9bc":{"__comp":"17896441","content":"e33c6b61"},"/docs/for-developers/web3.py-2a2":{"__comp":"17896441","content":"4d90c4d9"},"/docs/fundamentals/configuration-19c":{"__comp":"17896441","content":"16bcd8b6"},"/docs/fundamentals/configuration/accountabstraction-daa":{"__comp":"17896441","content":"f8e9baae"},"/docs/fundamentals/configuration/aura-02a":{"__comp":"17896441","content":"44577fad"},"/docs/fundamentals/configuration/auramerge-44b":{"__comp":"17896441","content":"30c152a1"},"/docs/fundamentals/configuration/blocks-627":{"__comp":"17896441","content":"d8a27932"},"/docs/fundamentals/configuration/bloom-e39":{"__comp":"17896441","content":"026e6f12"},"/docs/fundamentals/configuration/ethstats-b95":{"__comp":"17896441","content":"0403e71a"},"/docs/fundamentals/configuration/healthchecks-68a":{"__comp":"17896441","content":"b6ba0dff"},"/docs/fundamentals/configuration/hive-86c":{"__comp":"17896441","content":"57295230"},"/docs/fundamentals/configuration/init-220":{"__comp":"17896441","content":"f07817a9"},"/docs/fundamentals/configuration/jsonrpc-80b":{"__comp":"17896441","content":"23285914"},"/docs/fundamentals/configuration/keystore-a1c":{"__comp":"17896441","content":"463f6399"},"/docs/fundamentals/configuration/merge-af4":{"__comp":"17896441","content":"36cf5d25"},"/docs/fundamentals/configuration/metrics-7ab":{"__comp":"17896441","content":"c7e79d4b"},"/docs/fundamentals/configuration/mev-a65":{"__comp":"17896441","content":"0be924aa"},"/docs/fundamentals/configuration/mining-0ca":{"__comp":"17896441","content":"7a68c7d8"},"/docs/fundamentals/configuration/network-03f":{"__comp":"17896441","content":"dcd469cb"},"/docs/fundamentals/configuration/plugin-2be":{"__comp":"17896441","content":"09a763c4"},"/docs/fundamentals/configuration/pruning-e67":{"__comp":"17896441","content":"825018a4"},"/docs/fundamentals/configuration/receipt-829":{"__comp":"17896441","content":"b0f859a8"},"/docs/fundamentals/configuration/sample-configuration-13b":{"__comp":"17896441","content":"386d502a"},"/docs/fundamentals/configuration/seq-42e":{"__comp":"17896441","content":"6f716d37"},"/docs/fundamentals/configuration/sync-05e":{"__comp":"17896441","content":"003b20fb"},"/docs/fundamentals/configuration/tracestore-8d1":{"__comp":"17896441","content":"ed4735bd"},"/docs/fundamentals/configuration/txpool-5ab":{"__comp":"17896441","content":"0c92c0a5"},"/docs/fundamentals/configuration/wallet-e2c":{"__comp":"17896441","content":"b53a0035"},"/docs/fundamentals/database-899":{"__comp":"17896441","content":"108c5320"},"/docs/fundamentals/how-to-reduce-database-size-7d9":{"__comp":"17896441","content":"96b60a33"},"/docs/fundamentals/how-to-reduce-database-size/full-pruning-c99":{"__comp":"17896441","content":"64f637cf"},"/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch-c95":{"__comp":"17896441","content":"845744b6"},"/docs/fundamentals/logs/logging-configuration-556":{"__comp":"17896441","content":"11c6555c"},"/docs/fundamentals/logs/logs-6bf":{"__comp":"17896441","content":"0e71e10c"},"/docs/fundamentals/private-networks-73e":{"__comp":"17896441","content":"cd7ecfdc"},"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain-f3f":{"__comp":"17896441","content":"ebbf84a8"},"/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain-5be":{"__comp":"17896441","content":"94ffc943"},"/docs/fundamentals/running-nethermind-post-merge-eab":{"__comp":"17896441","content":"d4a26b2c"},"/docs/fundamentals/running-nethermind/running-the-client-fce":{"__comp":"17896441","content":"f342b8d6"},"/docs/fundamentals/running-nethermind/runtime-24f":{"__comp":"17896441","content":"515ed2ae"},"/docs/fundamentals/security-fb2":{"__comp":"17896441","content":"0116ccdc"},"/docs/fundamentals/sync-modes-fc5":{"__comp":"17896441","content":"f4c3a4a0"},"/docs/getting-started/installing-nethermind-6a9":{"__comp":"17896441","content":"73fcbb53"},"/docs/getting-started/manage-nethermind-with-systemd-706":{"__comp":"17896441","content":"394234c7"},"/docs/getting-started/migrating-from-geth-6f6":{"__comp":"17896441","content":"76ecb8df"},"/docs/getting-started/networks-221":{"__comp":"17896441","content":"f9383d62"},"/docs/getting-started/system-requirements-58c":{"__comp":"17896441","content":"068062df"},"/docs/interacting-with-nethermind/json-rpc-api-b20":{"__comp":"17896441","content":"adec6d2b"},"/docs/interacting-with-nethermind/json-rpc-api/admin-077":{"__comp":"17896441","content":"29ca8489"},"/docs/interacting-with-nethermind/json-rpc-api/clique-74d":{"__comp":"17896441","content":"d95744ba"},"/docs/interacting-with-nethermind/json-rpc-api/debug-f0d":{"__comp":"17896441","content":"6c6fcfe0"},"/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example-01a":{"__comp":"17896441","content":"5151d7fe"},"/docs/interacting-with-nethermind/json-rpc-api/eth-3c9":{"__comp":"17896441","content":"8d8fd354"},"/docs/interacting-with-nethermind/json-rpc-api/evm-e59":{"__comp":"17896441","content":"8995a362"},"/docs/interacting-with-nethermind/json-rpc-api/net-7c3":{"__comp":"17896441","content":"0f34cd48"},"/docs/interacting-with-nethermind/json-rpc-api/parity-370":{"__comp":"17896441","content":"31563212"},"/docs/interacting-with-nethermind/json-rpc-api/personal-839":{"__comp":"17896441","content":"62282da9"},"/docs/interacting-with-nethermind/json-rpc-api/proof-f82":{"__comp":"17896441","content":"2027d067"},"/docs/interacting-with-nethermind/json-rpc-api/rpc-12f":{"__comp":"17896441","content":"ce1c2c57"},"/docs/interacting-with-nethermind/json-rpc-api/subscribe-b1e":{"__comp":"17896441","content":"9dd11cd8"},"/docs/interacting-with-nethermind/json-rpc-api/trace-dc7":{"__comp":"17896441","content":"af7f12e4"},"/docs/interacting-with-nethermind/json-rpc-api/txpool-5f3":{"__comp":"17896441","content":"4f624714"},"/docs/interacting-with-nethermind/json-rpc-api/web3-8b4":{"__comp":"17896441","content":"c7e82fdb"},"/docs/interacting-with-nethermind/json-rpc-api/witness-a8e":{"__comp":"17896441","content":"4f2dfd2d"},"/docs/monitoring/metrics-explanation-2ab":{"__comp":"17896441","content":"839299d0"},"/docs/monitoring/metrics-explanation/accountabstraction-37f":{"__comp":"17896441","content":"c31daa4a"},"/docs/monitoring/metrics-explanation/accountabstraction.network-3d0":{"__comp":"17896441","content":"36132932"},"/docs/monitoring/metrics-explanation/blockchain-e91":{"__comp":"17896441","content":"e533526e"},"/docs/monitoring/metrics-explanation/consensus.aura-84e":{"__comp":"17896441","content":"761a9455"},"/docs/monitoring/metrics-explanation/db-ffe":{"__comp":"17896441","content":"75362c5c"},"/docs/monitoring/metrics-explanation/dotnet-counters-e75":{"__comp":"17896441","content":"cd725121"},"/docs/monitoring/metrics-explanation/evm-3ab":{"__comp":"17896441","content":"7d5e0029"},"/docs/monitoring/metrics-explanation/init-64e":{"__comp":"17896441","content":"6c93811b"},"/docs/monitoring/metrics-explanation/jsonrpc-ec7":{"__comp":"17896441","content":"6a658266"},"/docs/monitoring/metrics-explanation/merge.plugin-4d7":{"__comp":"17896441","content":"db14c9d3"},"/docs/monitoring/metrics-explanation/mev-ee6":{"__comp":"17896441","content":"b183ded8"},"/docs/monitoring/metrics-explanation/network-812":{"__comp":"17896441","content":"6613fd3b"},"/docs/monitoring/metrics-explanation/runner-7bd":{"__comp":"17896441","content":"79cbde4c"},"/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture-e94":{"__comp":"17896441","content":"535c1ff5"},"/docs/monitoring/metrics-explanation/store-ed1":{"__comp":"17896441","content":"5bdddcf3"},"/docs/monitoring/metrics-explanation/trie-b02":{"__comp":"17896441","content":"8f40cd51"},"/docs/monitoring/metrics-explanation/trie.pruning-ddd":{"__comp":"17896441","content":"fdefced7"},"/docs/monitoring/metrics-explanation/txpool-4b7":{"__comp":"17896441","content":"2359c720"},"/docs/monitoring/monitoring-node-health-4e1":{"__comp":"17896441","content":"a42fe60f"},"/docs/nethermind-utilities/cli-d87":{"__comp":"17896441","content":"14f3d8bb"},"/docs/nethermind-utilities/cli/admin-0b9":{"__comp":"17896441","content":"b41e4962"},"/docs/nethermind-utilities/cli/clique-756":{"__comp":"17896441","content":"5cdd2ffd"},"/docs/nethermind-utilities/cli/debug-89f":{"__comp":"17896441","content":"230f210b"},"/docs/nethermind-utilities/cli/diag-fc8":{"__comp":"17896441","content":"969befe5"},"/docs/nethermind-utilities/cli/eth-e52":{"__comp":"17896441","content":"a2b442ad"},"/docs/nethermind-utilities/cli/net-52f":{"__comp":"17896441","content":"8fc202ae"},"/docs/nethermind-utilities/cli/node-30f":{"__comp":"17896441","content":"edcc1cdc"},"/docs/nethermind-utilities/cli/parity-6af":{"__comp":"17896441","content":"9d85131a"},"/docs/nethermind-utilities/cli/personal-7ec":{"__comp":"17896441","content":"d0812bb9"},"/docs/nethermind-utilities/cli/proof-a3b":{"__comp":"17896441","content":"77250fd7"},"/docs/nethermind-utilities/cli/system-27d":{"__comp":"17896441","content":"f496bf89"},"/docs/nethermind-utilities/cli/trace-6b0":{"__comp":"17896441","content":"0d2058e7"},"/docs/nethermind-utilities/cli/txpool-4e1":{"__comp":"17896441","content":"f44497bc"},"/docs/nethermind-utilities/cli/web3-ba7":{"__comp":"17896441","content":"fce1c785"},"/docs/nethermind-utilities/pipeline-84e":{"__comp":"17896441","content":"aa0f377f"},"/docs/resources/connecting-wallet-859":{"__comp":"17896441","content":"394f37a7"},"/docs/resources/faq-fbb":{"__comp":"17896441","content":"e0e00496"},"/docs/resources/firewall-configuration-52e":{"__comp":"17896441","content":"3cef4706"},"/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack-a92":{"__comp":"17896441","content":"335505b0"},"/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind-5e9":{"__comp":"17896441","content":"4808fd9f"},"/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind-6a3":{"__comp":"17896441","content":"c81a798d"},"/docs/resources/guides-and-helpers/validator-setup/aura-validator-0dd":{"__comp":"17896441","content":"6dd8f82a"},"/docs/resources/guides-and-helpers/validator-setup/eth2-validator-340":{"__comp":"17896441","content":"247dabad"},"/docs/resources/know-issues-d30":{"__comp":"17896441","content":"72759bb7"},"/-fc2":{"__comp":"c4f5d8e4","__context":{"plugin":"a7434565"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=9383,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.484d3acd.js.LICENSE.txt b/assets/js/main.484d3acd.js.LICENSE.txt new file mode 100644 index 000000000..eb75d6910 --- /dev/null +++ b/assets/js/main.484d3acd.js.LICENSE.txt @@ -0,0 +1,63 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/** + * @license React + * use-sync-external-store-shim.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + */ + +/** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v17.0.2 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v17.0.2 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/assets/js/runtime~main.37662813.js b/assets/js/runtime~main.37662813.js new file mode 100644 index 000000000..f1142f4a6 --- /dev/null +++ b/assets/js/runtime~main.37662813.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,f,d,a,c,b={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,e=[],r.O=(f,d,a,c)=>{if(!d){var b=1/0;for(i=0;i<e.length;i++){d=e[i][0],a=e[i][1],c=e[i][2];for(var t=!0,o=0;o<d.length;o++)(!1&c||b>=c)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,c<b&&(b=c));if(t){e.splice(i--,1);var n=a();void 0!==n&&(f=n)}}return f}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[d,a,c]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};f=f||[null,d({}),d([]),d(d)];for(var t=2&a&&e;"object"==typeof t&&!~f.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((f=>b[f]=()=>e[f]));return b.default=()=>e,r.d(c,b),c},r.d=(e,f)=>{for(var d in f)r.o(f,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:f[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,d)=>(r.f[d](e,f),f)),[])),r.u=e=>"assets/js/"+({45:"4808fd9f",53:"935f2afb",90:"026e6f12",100:"b0f859a8",110:"66406991",122:"f9383d62",166:"839299d0",180:"761a9455",225:"3152febb",453:"30a24c52",529:"bf8bff70",533:"b2b675dd",579:"b6ba0dff",643:"fce1c785",713:"e0e00496",757:"845744b6",821:"adec6d2b",915:"f4c3a4a0",948:"8717b14a",1035:"386d502a",1049:"7a68c7d8",1076:"f07817a9",1285:"f496bf89",1288:"068062df",1374:"b41e4962",1418:"31563212",1424:"8f40cd51",1477:"b2f554cd",1542:"f342b8d6",1544:"5cdd2ffd",1633:"031793e1",1702:"463f6399",1713:"a7023ddc",1914:"d9f32620",2031:"0e71e10c",2175:"f8e9baae",2198:"d95744ba",2267:"59362658",2345:"515ed2ae",2362:"e273c56f",2529:"9d85131a",2535:"814f3328",2674:"16bcd8b6",2831:"394f37a7",3085:"1f391b9e",3089:"a6aa9e1f",3111:"a2b442ad",3175:"8fc202ae",3205:"a80da1cf",3282:"36cf5d25",3374:"aa0f377f",3418:"09a763c4",3514:"73664a40",3608:"9e4087bc",3632:"29ca8489",3643:"75362c5c",3755:"0d2058e7",3988:"7d5e0029",4013:"01a85c17",4053:"c7e79d4b",4173:"4f2dfd2d",4195:"c4f5d8e4",4405:"0c92c0a5",4641:"335505b0",4687:"d4a26b2c",4693:"535c1ff5",4819:"230f210b",4867:"247dabad",4933:"94ffc943",4971:"825018a4",5093:"9dd11cd8",5147:"64f637cf",5251:"ebbf84a8",5378:"6a658266",5497:"84eaa0d0",5519:"8d8fd354",5527:"af7f12e4",5548:"252529aa",5608:"5151d7fe",5655:"72759bb7",5836:"c0d97a59",5881:"0be924aa",5958:"fdefced7",6011:"addfe087",6070:"f44497bc",6103:"ccc49370",6161:"30c152a1",6224:"6613fd3b",6225:"969befe5",6353:"e533526e",6417:"6c93811b",6654:"79cbde4c",6682:"5bdddcf3",6688:"cd7ecfdc",6806:"394234c7",6833:"6dd8f82a",6879:"57295230",6938:"608ae6a4",7010:"62282da9",7017:"db14c9d3",7039:"0f34cd48",7169:"dd2f7272",7178:"096bfee4",7199:"e33c6b61",7208:"2359c720",7414:"393be207",7466:"edcc1cdc",7476:"0116ccdc",7606:"6f716d37",7645:"a7434565",7690:"c7e82fdb",7723:"b53a0035",7848:"3cef4706",7918:"17896441",7919:"76ecb8df",7944:"35e5a526",7948:"84d60698",8030:"d999088d",8109:"2b9f830c",8200:"4d90c4d9",8217:"36132932",8271:"1c091541",8367:"ed4735bd",8392:"003b20fb",8421:"23374ca6",8432:"d0812bb9",8508:"c31daa4a",8530:"c81a798d",8534:"77250fd7",8555:"23285914",8610:"6875c492",8636:"f4f34a3a",8785:"a42fe60f",8854:"d8a27932",8922:"0403e71a",8967:"9cf795e3",8979:"44577fad",9003:"925b3f96",9035:"4c9e35b1",9090:"14f3d8bb",9205:"8995a362",9330:"dcd469cb",9334:"247783bb",9391:"108c5320",9414:"73fcbb53",9475:"4f624714",9514:"1be78505",9537:"ce1c2c57",9546:"b183ded8",9555:"2027d067",9642:"7661071f",9700:"e16015ca",9817:"14eb3368",9839:"11c6555c",9842:"96b60a33",9878:"cd725121",9918:"6c6fcfe0"}[e]||e)+"."+{45:"a35f3b8b",53:"bbc30494",90:"b7977d2d",100:"4f9c762d",110:"8dcbcfde",122:"e6b6260f",166:"bb177adc",180:"13a474c8",225:"4d64c780",453:"9ed5bd5c",529:"eda5b526",533:"d838adc3",579:"d907ae45",643:"5d8d5ebf",713:"f8306781",732:"bac45838",757:"33414a75",821:"279292d7",915:"858afca7",948:"b19301c3",1035:"1f9010b1",1049:"131a1fd0",1076:"7a470662",1285:"0cfe1013",1288:"ebf103e0",1374:"8fc4b8f1",1418:"12e5c5f5",1424:"58e64645",1477:"457fb4be",1506:"2e7ca40e",1542:"cfd9c11c",1544:"d677d377",1633:"ed2d5306",1702:"78289bd2",1713:"94ca480e",1914:"e105d1ca",2031:"412624f6",2175:"d161ba1d",2198:"a1d4c6bf",2267:"c3dfb9a0",2345:"ce034015",2362:"171d7f11",2529:"6e7167e8",2535:"f1eafc3d",2674:"d6da0510",2831:"233e2820",3085:"85cb589c",3089:"2771f066",3111:"63821026",3175:"ca5b4d11",3205:"80cfa478",3282:"f7f31820",3374:"638bd835",3418:"5cf6b8bf",3514:"f39a3d23",3608:"a9bd7bfc",3632:"c336f7f0",3643:"5d4229a8",3755:"eee969ef",3988:"92e94f6c",4013:"92faa9e9",4053:"b0bca42b",4173:"eb06befa",4195:"d338d959",4405:"dcbb7eae",4641:"eaea51c3",4687:"ceafe689",4693:"5f55c906",4819:"362e957b",4867:"0594d128",4933:"4f47b553",4971:"08f5e7e6",4972:"42a6d37d",5093:"ba79b889",5147:"46ee1a3b",5251:"2720b908",5378:"21f54c09",5497:"05e0f945",5519:"7eaef1fa",5527:"ea49534d",5548:"b5af3c71",5608:"144fe83c",5655:"c6b89dea",5836:"50da0262",5881:"44c8505a",5958:"30d56142",6011:"aaf01e20",6070:"fb3fe7db",6103:"7b4517fe",6161:"72e9d88d",6224:"3c29b1a2",6225:"4f6d2f45",6353:"7fbd9ca9",6417:"75c20437",6654:"b1f8fdad",6682:"4640ea2f",6688:"09affb77",6806:"1878f28d",6833:"fdf3911c",6879:"1a3106ab",6938:"54822b6c",7010:"cf30d64c",7017:"e0bebd26",7039:"3dc2e6b6",7169:"0088b8ea",7178:"3f3fee8a",7199:"0a62e53a",7208:"d491ee7f",7414:"3e30333d",7466:"495b5304",7476:"309618ae",7606:"f1c64dfd",7645:"cbadb245",7690:"77ea596a",7723:"33e0e9cc",7848:"993265f9",7918:"8bb4ba6a",7919:"c2c29083",7944:"8af6073e",7948:"9699dfc3",8030:"0121be19",8109:"a24ebfad",8200:"2e2a7633",8217:"07023be6",8271:"6b658ffb",8367:"24b768da",8392:"16c89777",8421:"1d53a022",8432:"234c33df",8508:"9bfd2f1d",8530:"017bae0e",8534:"12216159",8555:"6f9d5ff4",8610:"1b99bca8",8636:"4b784570",8785:"a848e27a",8854:"140f7c74",8922:"b57a9193",8967:"be0dc366",8979:"a6f603fc",9003:"bd54f43b",9035:"af2ca165",9090:"cc0d3ca7",9205:"5c441479",9330:"665e5d92",9334:"70797f38",9391:"66220fc7",9414:"4d07abe4",9475:"4271821c",9514:"538c7c13",9537:"b8c1e2a2",9546:"34fac243",9555:"5fa7e256",9642:"cd5a4dcf",9700:"5e1b3f1e",9817:"35f83f8e",9839:"712c404e",9842:"ea57d786",9878:"7af5e7fe",9918:"e60298e7"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),a={},c="my-website:",r.l=(e,f,d,b)=>{if(a[e])a[e].push(f);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==c+d){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",c+d),t.src=e),a[e]=[f];var l=(f,d)=>{t.onerror=t.onload=null,clearTimeout(s);var c=a[e];if(delete a[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach((e=>e(d))),f)return f(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",23285914:"8555",31563212:"1418",36132932:"8217",57295230:"6879",59362658:"2267",66406991:"110","4808fd9f":"45","935f2afb":"53","026e6f12":"90",b0f859a8:"100",f9383d62:"122","839299d0":"166","761a9455":"180","3152febb":"225","30a24c52":"453",bf8bff70:"529",b2b675dd:"533",b6ba0dff:"579",fce1c785:"643",e0e00496:"713","845744b6":"757",adec6d2b:"821",f4c3a4a0:"915","8717b14a":"948","386d502a":"1035","7a68c7d8":"1049",f07817a9:"1076",f496bf89:"1285","068062df":"1288",b41e4962:"1374","8f40cd51":"1424",b2f554cd:"1477",f342b8d6:"1542","5cdd2ffd":"1544","031793e1":"1633","463f6399":"1702",a7023ddc:"1713",d9f32620:"1914","0e71e10c":"2031",f8e9baae:"2175",d95744ba:"2198","515ed2ae":"2345",e273c56f:"2362","9d85131a":"2529","814f3328":"2535","16bcd8b6":"2674","394f37a7":"2831","1f391b9e":"3085",a6aa9e1f:"3089",a2b442ad:"3111","8fc202ae":"3175",a80da1cf:"3205","36cf5d25":"3282",aa0f377f:"3374","09a763c4":"3418","73664a40":"3514","9e4087bc":"3608","29ca8489":"3632","75362c5c":"3643","0d2058e7":"3755","7d5e0029":"3988","01a85c17":"4013",c7e79d4b:"4053","4f2dfd2d":"4173",c4f5d8e4:"4195","0c92c0a5":"4405","335505b0":"4641",d4a26b2c:"4687","535c1ff5":"4693","230f210b":"4819","247dabad":"4867","94ffc943":"4933","825018a4":"4971","9dd11cd8":"5093","64f637cf":"5147",ebbf84a8:"5251","6a658266":"5378","84eaa0d0":"5497","8d8fd354":"5519",af7f12e4:"5527","252529aa":"5548","5151d7fe":"5608","72759bb7":"5655",c0d97a59:"5836","0be924aa":"5881",fdefced7:"5958",addfe087:"6011",f44497bc:"6070",ccc49370:"6103","30c152a1":"6161","6613fd3b":"6224","969befe5":"6225",e533526e:"6353","6c93811b":"6417","79cbde4c":"6654","5bdddcf3":"6682",cd7ecfdc:"6688","394234c7":"6806","6dd8f82a":"6833","608ae6a4":"6938","62282da9":"7010",db14c9d3:"7017","0f34cd48":"7039",dd2f7272:"7169","096bfee4":"7178",e33c6b61:"7199","2359c720":"7208","393be207":"7414",edcc1cdc:"7466","0116ccdc":"7476","6f716d37":"7606",a7434565:"7645",c7e82fdb:"7690",b53a0035:"7723","3cef4706":"7848","76ecb8df":"7919","35e5a526":"7944","84d60698":"7948",d999088d:"8030","2b9f830c":"8109","4d90c4d9":"8200","1c091541":"8271",ed4735bd:"8367","003b20fb":"8392","23374ca6":"8421",d0812bb9:"8432",c31daa4a:"8508",c81a798d:"8530","77250fd7":"8534","6875c492":"8610",f4f34a3a:"8636",a42fe60f:"8785",d8a27932:"8854","0403e71a":"8922","9cf795e3":"8967","44577fad":"8979","925b3f96":"9003","4c9e35b1":"9035","14f3d8bb":"9090","8995a362":"9205",dcd469cb:"9330","247783bb":"9334","108c5320":"9391","73fcbb53":"9414","4f624714":"9475","1be78505":"9514",ce1c2c57:"9537",b183ded8:"9546","2027d067":"9555","7661071f":"9642",e16015ca:"9700","14eb3368":"9817","11c6555c":"9839","96b60a33":"9842",cd725121:"9878","6c6fcfe0":"9918"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(f,d)=>{var a=r.o(e,f)?e[f]:void 0;if(0!==a)if(a)d.push(a[2]);else if(/^(1303|532)$/.test(f))e[f]=0;else{var c=new Promise(((d,c)=>a=e[f]=[d,c]));d.push(a[2]=c);var b=r.p+r.u(f),t=new Error;r.l(b,(d=>{if(r.o(e,f)&&(0!==(a=e[f])&&(e[f]=void 0),a)){var c=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+f+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,a[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,d)=>{var a,c,b=d[0],t=d[1],o=d[2],n=0;if(b.some((f=>0!==e[f]))){for(a in t)r.o(t,a)&&(r.m[a]=t[a]);if(o)var i=o(r)}for(f&&f(d);n<b.length;n++)c=b[n],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return r.O(i)},d=self.webpackChunkmy_website=self.webpackChunkmy_website||[];d.forEach(f.bind(null,0)),d.push=f.bind(null,d.push.bind(d))})()})(); \ No newline at end of file diff --git a/blog.html b/blog.html new file mode 100644 index 000000000..e49239dc5 --- /dev/null +++ b/blog.html @@ -0,0 +1,17 @@ +<!doctype html> +<html lang="en" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v2.4.1"> +<title data-rh="true">Blog | Nethermind Documentation + + + + + +
+

· One min read
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

· One min read
Gao Wei

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + + + \ No newline at end of file diff --git a/blog/archive.html b/blog/archive.html new file mode 100644 index 000000000..2fce92c6e --- /dev/null +++ b/blog/archive.html @@ -0,0 +1,17 @@ + + + + + +Archive | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/blog/atom.xml b/blog/atom.xml new file mode 100644 index 000000000..9cc23f7e9 --- /dev/null +++ b/blog/atom.xml @@ -0,0 +1,70 @@ + + + https://docs.nethermind.io/blog + Nethermind Documentation Blog + 2021-08-26T00:00:00.000Z + https://github.com/jpmonette/feed + + Nethermind Documentation Blog + https://docs.nethermind.io/img/favicon.ico + + <![CDATA[Welcome]]> + https://docs.nethermind.io/blog/welcome + + 2021-08-26T00:00:00.000Z + + Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

]]>
+ + Sébastien Lorber + https://sebastienlorber.com + + + Yangshun Tay + https://github.com/yangshun + + + + +
+ + <![CDATA[MDX Blog Post]]> + https://docs.nethermind.io/blog/mdx-blog-post + + 2021-08-01T00:00:00.000Z + + Blog posts support Docusaurus Markdown features, such as MDX.

tip

Use the power of React to create interactive blog posts.

<button onClick={() => alert("button clicked!")}>Click me!</button>
]]>
+ + Sébastien Lorber + https://sebastienlorber.com + + +
+ + <![CDATA[Long Blog Post]]> + https://docs.nethermind.io/blog/long-blog-post + + 2019-05-29T00:00:00.000Z + + This is the summary of a very long blog post,

Use a <!-- truncate --> comment to limit blog post size in the list view.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

]]>
+ + Endilie Yacop Sucipto + https://github.com/endiliey + + + +
+ + <![CDATA[First Blog Post]]> + https://docs.nethermind.io/blog/first-blog-post + + 2019-05-28T00:00:00.000Z + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

]]>
+ + Gao Wei + https://github.com/wgao19 + + + +
+
\ No newline at end of file diff --git a/blog/first-blog-post.html b/blog/first-blog-post.html new file mode 100644 index 000000000..59d8a0b39 --- /dev/null +++ b/blog/first-blog-post.html @@ -0,0 +1,17 @@ + + + + + +First Blog Post | Nethermind Documentation + + + + + +
+

First Blog Post

· One min read
Gao Wei

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + + + \ No newline at end of file diff --git a/blog/long-blog-post.html b/blog/long-blog-post.html new file mode 100644 index 000000000..b7d99923f --- /dev/null +++ b/blog/long-blog-post.html @@ -0,0 +1,17 @@ + + + + + +Long Blog Post | Nethermind Documentation + + + + + +
+

Long Blog Post

· 3 min read
Endilie Yacop Sucipto

This is the summary of a very long blog post,

Use a <!-- truncate --> comment to limit blog post size in the list view.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + + + \ No newline at end of file diff --git a/blog/mdx-blog-post.html b/blog/mdx-blog-post.html new file mode 100644 index 000000000..9ee7c00c7 --- /dev/null +++ b/blog/mdx-blog-post.html @@ -0,0 +1,17 @@ + + + + + +MDX Blog Post | Nethermind Documentation + + + + + +
+

MDX Blog Post

· One min read
Sébastien Lorber

Blog posts support Docusaurus Markdown features, such as MDX.

tip

Use the power of React to create interactive blog posts.

<button onClick={() => alert("button clicked!")}>Click me!</button>
+ + + + \ No newline at end of file diff --git a/blog/rss.xml b/blog/rss.xml new file mode 100644 index 000000000..3171806ab --- /dev/null +++ b/blog/rss.xml @@ -0,0 +1,52 @@ + + + + Nethermind Documentation Blog + https://docs.nethermind.io/blog + Nethermind Documentation Blog + Thu, 26 Aug 2021 00:00:00 GMT + https://validator.w3.org/feed/docs/rss2.html + https://github.com/jpmonette/feed + en + + <![CDATA[Welcome]]> + https://docs.nethermind.io/blog/welcome + https://docs.nethermind.io/blog/welcome + Thu, 26 Aug 2021 00:00:00 GMT + + Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

]]>
+ facebook + hello + docusaurus +
+ + <![CDATA[MDX Blog Post]]> + https://docs.nethermind.io/blog/mdx-blog-post + https://docs.nethermind.io/blog/mdx-blog-post + Sun, 01 Aug 2021 00:00:00 GMT + + Blog posts support Docusaurus Markdown features, such as MDX.

tip

Use the power of React to create interactive blog posts.

<button onClick={() => alert("button clicked!")}>Click me!</button>
]]>
+ docusaurus +
+ + <![CDATA[Long Blog Post]]> + https://docs.nethermind.io/blog/long-blog-post + https://docs.nethermind.io/blog/long-blog-post + Wed, 29 May 2019 00:00:00 GMT + + This is the summary of a very long blog post,

Use a <!-- truncate --> comment to limit blog post size in the list view.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

]]>
+ hello + docusaurus +
+ + <![CDATA[First Blog Post]]> + https://docs.nethermind.io/blog/first-blog-post + https://docs.nethermind.io/blog/first-blog-post + Tue, 28 May 2019 00:00:00 GMT + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

]]>
+ hola + docusaurus +
+
+
\ No newline at end of file diff --git a/blog/tags.html b/blog/tags.html new file mode 100644 index 000000000..3c8b7f55b --- /dev/null +++ b/blog/tags.html @@ -0,0 +1,17 @@ + + + + + +Tags | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/blog/tags/docusaurus.html b/blog/tags/docusaurus.html new file mode 100644 index 000000000..aaece71eb --- /dev/null +++ b/blog/tags/docusaurus.html @@ -0,0 +1,17 @@ + + + + + +4 posts tagged with "docusaurus" | Nethermind Documentation + + + + + +
+

4 posts tagged with "docusaurus"

View All Tags

· One min read
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

· One min read
Gao Wei

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + + + \ No newline at end of file diff --git a/blog/tags/facebook.html b/blog/tags/facebook.html new file mode 100644 index 000000000..409d3a81c --- /dev/null +++ b/blog/tags/facebook.html @@ -0,0 +1,17 @@ + + + + + +One post tagged with "facebook" | Nethermind Documentation + + + + + +
+

One post tagged with "facebook"

View All Tags

· One min read
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

+ + + + \ No newline at end of file diff --git a/blog/tags/hello.html b/blog/tags/hello.html new file mode 100644 index 000000000..8c79e1e15 --- /dev/null +++ b/blog/tags/hello.html @@ -0,0 +1,17 @@ + + + + + +2 posts tagged with "hello" | Nethermind Documentation + + + + + +
+

2 posts tagged with "hello"

View All Tags

· One min read
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

+ + + + \ No newline at end of file diff --git a/blog/tags/hola.html b/blog/tags/hola.html new file mode 100644 index 000000000..53a30b44b --- /dev/null +++ b/blog/tags/hola.html @@ -0,0 +1,17 @@ + + + + + +One post tagged with "hola" | Nethermind Documentation + + + + + +
+

One post tagged with "hola"

View All Tags

· One min read
Gao Wei

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + + + \ No newline at end of file diff --git a/blog/welcome.html b/blog/welcome.html new file mode 100644 index 000000000..c526c2e94 --- /dev/null +++ b/blog/welcome.html @@ -0,0 +1,17 @@ + + + + + +Welcome | Nethermind Documentation + + + + + +
+

Welcome

· One min read
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

+ + + + \ No newline at end of file diff --git a/docs.html b/docs.html new file mode 100644 index 000000000..80c06a7ce --- /dev/null +++ b/docs.html @@ -0,0 +1,27 @@ + + + + + +Welcome to Nethermind | Nethermind Documentation + + + + + +
+

Welcome to Nethermind

Welcome to the Nethermind Client documentation! Nethermind is a leading provider of Ethereum solutions for developers +and enterprises. Founded in 2017 by a small team of world-class technologists, Nethermind has worked tirelessly to +deliver the fastest Ethereum client in the market. Boosted by a grant from the Ethereum Foundation in August 2018, our +team has built a flagship Ethereum client that is all about performance and flexibility.

The Nethermind Client is built on .NET core, a widespread, enterprise-friendly platform that makes integration with +existing infrastructures simple. At the same time, the Nethermind Client does not compromise on stability, reliability, +data integrity, and security. Whether you're a developer looking to build decentralized applications on the Ethereum +network, an enterprise looking for a reliable Ethereum solution, or a user looking to interact with the Ethereum +blockchain, the Nethermind Client has you covered.

In this documentation, you'll find information on how to install and configure the Nethermind Client, as well as how to +use its various features. We've organized the documentation by topic to make it easy for you to find the information you +need, and we've included plenty of examples and visuals to help you understand how to use the Nethermind Client.

We hope you find this documentation helpful, and we welcome your feedback and suggestions for how we can continue to +improve the Nethermind Client and its documentation.

+ + + + \ No newline at end of file diff --git a/docs/category/contact-us.html b/docs/category/contact-us.html new file mode 100644 index 000000000..6fa21bbcf --- /dev/null +++ b/docs/category/contact-us.html @@ -0,0 +1,17 @@ + + + + + +Contact Us | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/category/for-developers.html b/docs/category/for-developers.html new file mode 100644 index 000000000..adbf593c0 --- /dev/null +++ b/docs/category/for-developers.html @@ -0,0 +1,17 @@ + + + + + +For Developers | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/category/fundamentals.html b/docs/category/fundamentals.html new file mode 100644 index 000000000..45f6a3849 --- /dev/null +++ b/docs/category/fundamentals.html @@ -0,0 +1,17 @@ + + + + + +Fundamentals | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/category/getting-started.html b/docs/category/getting-started.html new file mode 100644 index 000000000..ef92f726b --- /dev/null +++ b/docs/category/getting-started.html @@ -0,0 +1,17 @@ + + + + + +Getting Started | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/category/interacting-with-nethermind.html b/docs/category/interacting-with-nethermind.html new file mode 100644 index 000000000..21f8cccaf --- /dev/null +++ b/docs/category/interacting-with-nethermind.html @@ -0,0 +1,17 @@ + + + + + +Interacting With Nethermind | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/category/monitoring.html b/docs/category/monitoring.html new file mode 100644 index 000000000..1e340c418 --- /dev/null +++ b/docs/category/monitoring.html @@ -0,0 +1,17 @@ + + + + + +Monitoring | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/category/nethermind-utilities.html b/docs/category/nethermind-utilities.html new file mode 100644 index 000000000..ff8ae9051 --- /dev/null +++ b/docs/category/nethermind-utilities.html @@ -0,0 +1,17 @@ + + + + + +Nethermind Utilities | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/category/resources.html b/docs/category/resources.html new file mode 100644 index 000000000..1ef93f546 --- /dev/null +++ b/docs/category/resources.html @@ -0,0 +1,17 @@ + + + + + +Resources | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/contact.html b/docs/contact.html new file mode 100644 index 000000000..cb440b744 --- /dev/null +++ b/docs/contact.html @@ -0,0 +1,17 @@ + + + + + +Contact us | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/for-developers/building-nethermind.html b/docs/for-developers/building-nethermind.html new file mode 100644 index 000000000..258b9df66 --- /dev/null +++ b/docs/for-developers/building-nethermind.html @@ -0,0 +1,24 @@ + + + + + +Building from source | Nethermind Documentation + + + + + +
+

Building from source

The Nethermind's source code can be obtained from our repository on +GitHub:

git clone --recursive https://github.com/nethermindeth/nethermind.git

There are two options buiding Nethermind from source code:

Building standalone binaries

Prerequisites

To build Nethermind from source, install .NET SDK 7 or later.

Building

To build both the client and tests, run the following command from the project's root directory:

dotnet build src/Nethermind/Nethermind.sln -c release

To simply run the client with a specific configuration without building tests, see below.

info

Before running the client or tests, ensure the +platform-specific prerequisites are met.

Running the client

To launch the client, run the following command from the project's root directory (the previous step of the build is not +required):

cd src/Nethermind/Nethermind.Runner
dotnet run -c release -- -c mainnet

All Nethermind-specific parameters can be specified after --. For instance, the command above specifies the Mainnet +configuration only.

The build artifacts can be found in the bin/release/net7.0 directory. By default, the logs and database directories +are located here as well.

For more info, see Running Nethermind.

Testing

There are two test suites — Nethermind and Ethereum Foundation. Tests can be run with the following commands (the +initial step of the build is not required):

cd src/Nethermind

# Run Nethermind tests
dotnet test Nethermind.sln -c release

# Run Ethereum Foundation tests
dotnet test EthereumTests.sln -c release

Bulding Docker image

To build Nethermind Docker image, run the following command from the project's root directory:

docker build -t nethermind .

For more info about running Docker containers, +see How to install.

+ + + + \ No newline at end of file diff --git a/docs/for-developers/coding-style.html b/docs/for-developers/coding-style.html new file mode 100644 index 000000000..29aad139e --- /dev/null +++ b/docs/for-developers/coding-style.html @@ -0,0 +1,22 @@ + + + + + +Coding Style | Nethermind Documentation + + + + + +
+

Coding Style

General Rules:

  • We use four spaces for indentation (not tabs).

  • Do not use Hungarian Notation!

  • Avoid more than one empty line at any time. For example, do not have two blank lines between members of a type.

  • If a file happens to differ in style from these guidelines (e.g. private members are named m_member rather than +_member), the existing style in that file takes precedence.

  • We only use var when it's obvious what the variable type is (e.g. var stream = new FileStream(...) +not var stream = OpenStandardInput()).

  • Fields should be specified at the top within type declarations.

  • When using a single-statement if, we follow these conventions:

    • Using braces is always accepted, and required if any block of an if/else if/.../else compound statement uses braces +or if a single statement body spans multiple lines.
    • Braces may be omitted only if the body of every block associated with an if/else if/.../else compound statement is +placed on a single line.
  • Avoid complex conditions in ternary operators.

  • Avoid declaring methods with more than 5 parameters. Consider refactoring this code.

  • Try to replace large parameter-sets (> than 5 parameters) with one or more class or struct parameters –

    especially when used in multiple method signatures.

  • Always call Close() or Dispose() on classes that offer it.

  • Wrap instantiation of IDisposable objects with a “using” statement to ensure that Dispose() is

    automatically called.

  • Always prefer aggregation over inheritance.

Naming:

  • We use camelCase for local variables and parameters.
  • We use _camelCase for internal and private fields and use readonly where possible. Prefix internal and private +instance fields with _, and thread static fields with t_.
  • We use snake_case for test method names.
  • We use IPascalCase for interfaces names (see the I prefix).
  • For the rest of identifiers not specified here, we use PascalCase.
+ + + + \ No newline at end of file diff --git a/docs/for-developers/custom-analytic-tools.html b/docs/for-developers/custom-analytic-tools.html new file mode 100644 index 000000000..0e0a9bc53 --- /dev/null +++ b/docs/for-developers/custom-analytic-tools.html @@ -0,0 +1,20 @@ + + + + + +Custom Analytic Tools | Nethermind Documentation + + + + + +
+

Custom Analytic Tools

Check plugins for some easy addition of analytical tools

You can also read more about some useful interfaces below:

There are multiple extension points where you can add custom analytics to your Nethermind node if you know some C#. +Below you will find an example of using two very useful interfaces - IBlockVisitor and ITreeVisitor.

Just to execute the code I have added one new initialization step that invokes two custom verifiers that I have used for +calculating total supply in two different ways - by calculating mining rewards and by summing up all account balances:

    [RunnerStepDependencies(typeof(ReviewBlockTree))]
public class RunCustomTools : IStep
{
private readonly EthereumRunnerContext _context;

public RunCustomTools(EthereumRunnerContext context)
{
_context = context;
}

public Task Execute(CancellationToken cancellationToken)
{
ILogger logger = _context.LogManager.GetClassLogger();
IInitConfig initConfig = _context.Config<IInitConfig>();

switch (initConfig.DiagnosticMode)
{
case DiagnosticMode.VerifySupply:
{
logger.Info("Genesis supply:");
SupplyVerifier supplyVerifier = new SupplyVerifier(logger);
StateDb stateDb = new StateDb(_context.DbProvider.StateDb.Innermost);
StateDb codeDb = new StateDb(_context.DbProvider.StateDb.Innermost);
StateReader stateReader = new StateReader(stateDb, codeDb, _context.LogManager);
stateReader.RunTreeVisitor(supplyVerifier, _context.BlockTree!.Genesis.StateRoot);

Block head = _context.BlockTree!.Head;
logger.Info($"Head ({head.Number}) block supply:");
supplyVerifier = new SupplyVerifier(logger);
stateReader.RunTreeVisitor(supplyVerifier, head.StateRoot);
break;
}
case DiagnosticMode.VerifyRewards:
_context.BlockTree!.Accept(new RewardsVerifier(_context.LogManager), cancellationToken);
break;
}

return Task.CompletedTask;
}
}

Below you will see an example of using ITreeVisitor that allows to check all the blocks, including some of the discarded +branches if you wish so:

    public class RewardsVerifier : IBlockTreeVisitor
{
private ILogger _logger;
public bool PreventsAcceptingNewBlocks => true;
public long StartLevelInclusive => 0;
public long EndLevelExclusive => 10618000;

private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");
private UInt256 _uncles;
private UInt256 _blockRewards;

public RewardsVerifier(ILogManager logManager)
{
_logger = logManager.GetClassLogger();
}

private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);

public Task<BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken)
{
BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);
for (int i = 0; i < rewards.Length; i++)
{
if (rewards[i].RewardType == BlockRewardType.Uncle)
{
_uncles += rewards[i].Value;
}
else
{
_blockRewards += rewards[i].Value;
}
}

_logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}");
return Task.FromResult(BlockVisitOutcome.None);
}

public Task<LevelVisitOutcome> VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)
=> Task.FromResult(LevelVisitOutcome.None);

public Task<bool> VisitMissing(Keccak hash, CancellationToken cancellationToken)
=> Task.FromResult(true);

public Task<bool> VisitHeader(BlockHeader header, CancellationToken cancellationToken)
=> Task.FromResult(true);

public Task<LevelVisitOutcome> VisitLevelEnd(CancellationToken cancellationToken)
=> Task.FromResult(LevelVisitOutcome.None);
}

And here you will find an example of a tree visitor that sums up all the account balances:

    public class SupplyVerifier : ITreeVisitor
{
private readonly ILogger _logger;
private UInt256 _balance = UInt256.Zero;
private int _accountsVisited;

public SupplyVerifier(ILogger logger)
{
_logger = logger;
}

public bool ShouldVisit(Keccak nextNode) { return true; }

public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext) { }

public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext) { }

public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext) { }

public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext) { }

public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
{
if (trieVisitContext.IsStorage)
{
return;
}

AccountDecoder accountDecoder = new AccountDecoder();
Account account = accountDecoder.Decode(node.Value.AsRlpStream());
_balance += account.Balance;
_accountsVisited++;

_logger.Info($"Balance after visiting {_accountsVisited}: {_balance}");
}

public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext) { }
}
+ + + + \ No newline at end of file diff --git a/docs/for-developers/plugins.html b/docs/for-developers/plugins.html new file mode 100644 index 000000000..5116ea65c --- /dev/null +++ b/docs/for-developers/plugins.html @@ -0,0 +1,20 @@ + + + + + +Plugins | Nethermind Documentation + + + + + +
+

Plugins

Nethermind plugins is a powerful way of extending your local node capabilities.

(see also an article +here: https://medium.com/nethermind-eth/writing-your-first-nethermind-plugin-a9e04d81cf59)

Plugins that you can write:

Plugin TypeWhat can it be used for?
RPCAdding additional RPC modules to the client that have full access to the internal Nethermind APIs and can extend capabilities of the node when integrating with your infrastructure / systems.
Block Tree VisitorsCode allowing you to analyze entire block tree from genesis to the head block and execute aggregated calculations and checks.
Devp2pAllows you to create additional devp2p network protocol for your nodes to communicate over TCP/IP. You can also build custom products that will run attached to Nethermind nodes.
State VisitorsAllow you to run aggregated analysis on the entire raw format state (or just some accounts storages).
ConfigYou can add additional configuration categories to our config files and then use them in env variables, json files or command line to configure behaviour of your plugins.
TxPoolTxPool behaviours and listeners.
TracersCustom, powerful EVM tracers capable of extracting elements of EVM execution in real time.
CLIAdditional modules for Nethermind CLI that can allow you build some quick scratchpad style JavaScript based behaviors.

Note: When writing a plugin be carefull about exceptions you throw. Especially if you are hooking up event handlers +on some core objects like BlockProcessor or BlockTree. Those exceptions can bring the node down. This is by design. Its +responsibility of plugin writer to correctly handle those exceptions.

How to build a plugin? We included an example inside the Nethermind.Analytics plugin:

RPC Plugin example:

    [RpcModule(ModuleType.Clique)]
public interface IAnalyticsModule : IModule
{
[JsonRpcMethod(Description = "Retrieves ETH supply counted from state.", IsImplemented = true)]
ResultWrapper<UInt256> analytics_verifySupply();

[JsonRpcMethod(Description = "Retrieves ETH supply counted from rewards.", IsImplemented = true)]
ResultWrapper<UInt256> analytics_verifyRewards();
}

CLI Plugin example:

[CliModule("analytics")]
public class AnalyticsCliModule : CliModuleBase
{
[CliFunction("analytics", "verifySupply")]
public string VerifySupply()
{
return NodeManager.Post<string>("analytics_verifySupply").Result;
}

[CliFunction("analytics", "verifyRewards")]
public string VerifyRewards()
{
return NodeManager.Post<string>("analytics_verifyRewards").Result;
}

public AnalyticsCliModule(ICliEngine cliEngine, INodeManager nodeManager)
: base(cliEngine, nodeManager) { }
}

Block Tree Visitor Plugin example:

    public class RewardsVerifier : IBlockTreeVisitor
{
private ILogger _logger;
public bool PreventsAcceptingNewBlocks => true;
public long StartLevelInclusive => 0;
public long EndLevelExclusive { get; }

private UInt256 _genesisAllocations = UInt256.Parse("72009990499480000000000000");
private UInt256 _uncles;

public UInt256 BlockRewards { get; private set; }

public RewardsVerifier(ILogManager logManager, long endLevelExclusive)
{
_logger = logManager.GetClassLogger();
EndLevelExclusive = endLevelExclusive;
BlockRewards = _genesisAllocations;
}

private RewardCalculator _rewardCalculator = new RewardCalculator(MainnetSpecProvider.Instance);

public Task<BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken)
{
BlockReward[] rewards = _rewardCalculator.CalculateRewards(block);
for (int i = 0; i < rewards.Length; i++)
{
if (rewards[i].RewardType == BlockRewardType.Uncle)
{
_uncles += rewards[i].Value;
}
else
{
BlockRewards += rewards[i].Value;
}
}

_logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {BlockRewards} + {_uncles}");
return Task.FromResult(BlockVisitOutcome.None);
}

public Task<LevelVisitOutcome> VisitLevelStart(ChainLevelInfo chainLevelInfo, CancellationToken cancellationToken)
=> Task.FromResult(LevelVisitOutcome.None);

public Task<bool> VisitMissing(Keccak hash, CancellationToken cancellationToken)
=> Task.FromResult(true);

public Task<HeaderVisitOutcome> VisitHeader(BlockHeader header, CancellationToken cancellationToken)
=> Task.FromResult(HeaderVisitOutcome.None);

public Task<LevelVisitOutcome> VisitLevelEnd(CancellationToken cancellationToken)
=> Task.FromResult(LevelVisitOutcome.None);
}

Config plugin example:

public class AnalyticsConfig : IAnalyticsConfig
{
public bool PluginsEnabled { get; set; }
public bool StreamTransactions { get; set; }
public bool StreamBlocks { get; set; }
public bool LogPublishedData { get; set; }
}

State Tree Visitor example:

public class SupplyVerifier : ITreeVisitor
{
private readonly ILogger _logger;
private HashSet<Keccak> _ignoreThisOne = new HashSet<Keccak>();
private int _accountsVisited;
private int _nodesVisited;

public SupplyVerifier(ILogger logger)
{
_logger = logger;
}

public UInt256 Balance { get; set; } = UInt256.Zero;

public bool ShouldVisit(Keccak nextNode)
{
if (_ignoreThisOne.Count > 16)
{
_logger.Warn($"Ignore count leak -> {_ignoreThisOne.Count}");
}

if (_ignoreThisOne.Contains(nextNode))
{
_ignoreThisOne.Remove(nextNode);
return false;
}

return true;
}

public void VisitTree(Keccak rootHash, TrieVisitContext trieVisitContext)
{
}

public void VisitMissingNode(Keccak nodeHash, TrieVisitContext trieVisitContext)
{
_logger.Warn($"Missing node {nodeHash}");
}

public void VisitBranch(TrieNode node, TrieVisitContext trieVisitContext)
{
_logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
_nodesVisited++;

if (trieVisitContext.IsStorage)
{
for (int i = 0; i < 16; i++)
{
Keccak childHash = node.GetChildHash(i);
if (childHash != null)
{
_ignoreThisOne.Add(childHash);
}
}
}
}

public void VisitExtension(TrieNode node, TrieVisitContext trieVisitContext)
{
_nodesVisited++;
if (trieVisitContext.IsStorage)
{
_ignoreThisOne.Add(node.GetChildHash(0));
}
}

public void VisitLeaf(TrieNode node, TrieVisitContext trieVisitContext, byte[] value = null)
{
_nodesVisited++;

if (trieVisitContext.IsStorage)
{
return;
}

AccountDecoder accountDecoder = new AccountDecoder();
Account account = accountDecoder.Decode(node.Value.AsRlpStream());
Balance += account.Balance;
_accountsVisited++;

_logger.Info($"Balance after visiting {_accountsVisited} accounts and {_nodesVisited} nodes: {Balance}");
}

public void VisitCode(Keccak codeHash, TrieVisitContext trieVisitContext)
{
_nodesVisited++;
}
}
+ + + + \ No newline at end of file diff --git a/docs/for-developers/web3.py.html b/docs/for-developers/web3.py.html new file mode 100644 index 000000000..536d3bbc4 --- /dev/null +++ b/docs/for-developers/web3.py.html @@ -0,0 +1,19 @@ + + + + + +Web3.py | Nethermind Documentation + + + + + +
+

Web3.py

It is possible to connect to the Nethermind node using web3.py (python web3.js implementation). You will need to +have web3.py installed using following guides:

You may use below script in order to check your connection. Please make sure you have enabled JSON RPC module, this can +be done by passing flag --JsonRpc.Enabled true to either Nethermind.Launcher or Nethermind.Runner

from web3.auto import w3

connected = w3.isConnected()
print(connected)

if connected and w3.clientVersion.startswith('Nethermind'):
client = w3.clientVersion
print(client)

else:
client = None
print(client)

You should see the following output (depends on the node version):

True
Nethermind/v1.4.8-13-5c66dcdf6-20200120/X64-Linux 5.3.2-050302-generic/Core3.1.1
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration.html b/docs/fundamentals/configuration.html new file mode 100644 index 000000000..9f8026d22 --- /dev/null +++ b/docs/fundamentals/configuration.html @@ -0,0 +1,27 @@ + + + + + +Configuration | Nethermind Documentation + + + + + +
+

Configuration

There are three ways of configuring Nethermind node. They are presented below in the reversed order of priorities (if +you set the same property in the config file, in the environment variable and in the command line then the command line +value will be used).

Config file

Change the configuration properties in the .cfg file of the network configuration you wish to run. Each .cfg file +with the default setup is attached to Nethermind packages and can be found in configs folder.

Environment variables

The last way is to set the values in the environment variables, +e.g. set NETHERMIND_INITCONFIG_PROCESSINGENABLED = false

Command line options

Another way is to setup each configuration property by passing flags to either Nethermind.Runner +or Nethermind.Launcher. You can see the list of all config option by running ./Nethermind.Runner --help For example:

./Nethermind.Runner --config ropsten --JsonRpc.Enabled true --Init.ProcessingEnabled false
caution

When passing a flag, each property needs to be prefixed with its respective Module, followed by the property +name and its value e.g --Init.IsMining true

info

Use / as the path separator so the configs can be shared between all platforms supported (Linux, Windows, MacOS).

info

--config, --baseDbPath,--datadir, --loggerConfigSource, --log and --configsDirectoryoptions are available from +the command line to select config file, base DB directory prefix and log level respectively.

datadir

Usage: --datadir or -dd

You may want to use this option to store all data that the node produces in a custom directory. +The --datadir (-dd) changes paths of database, logs, keystoreto the target directory. You can specify either * +*relative or absolute** paths, e.g.

--datadir data
--datadir /home/user/nethermind/data
--datadir ./data
caution

Absolute paths of Init.BaseDbPath, Init.LogDirectory orKeyStore.KeyStoreDirectoryin config file will not be +overwritten by --datadir

baseDbPath

Usage: --baseDbPath or -d

Configures the path of the Nethermind's database folder. Is equal to setting --Init.BaseDbPath parameter.

--baseDbPath /home/user/my_node/db

config

Usage: --config **or **-c

Determines the configuration file of the network on which Nethermind will be running.

--config xdai

More on that here.

log

Usage: --log **or **-l

Changes the logging level.

--log DEBUG

More on that here

configsDirectory

Usage: --configsDirectory or -cd

Changes the source directory of your configuration files.

--configsDirectory /home/user/my_configs

loggerConfigSource

Usage: --loggerConfigSource or -lcs

Changes the path of the NLog.config file.

--loggerConfigSource /home/user/NLog.config

More on that here:

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/accountabstraction.html b/docs/fundamentals/configuration/accountabstraction.html new file mode 100644 index 000000000..edf76f08a --- /dev/null +++ b/docs/fundamentals/configuration/accountabstraction.html @@ -0,0 +1,17 @@ + + + + + +AccountAbstraction | Nethermind Documentation + + + + + +
+

AccountAbstraction

PropertyEnv VariableDescriptionDefault
AaPriorityPeersMaxCountNETHERMIND_ACCOUNTABSTRACTIONCONFIG_AAPRIORITYPEERSMAXCOUNTMax number of priority AccountAbstraction peers.20
EnabledNETHERMIND_ACCOUNTABSTRACTIONCONFIG_ENABLEDDefines whether UserOperations are allowed.false
EntryPointContractAddressesNETHERMIND_ACCOUNTABSTRACTIONCONFIG_ENTRYPOINTCONTRACTADDRESSESDefines the comma separated list of hex string representations of the addresses of the EntryPoint contract to which transactions can be made
FlashbotsEndpointNETHERMIND_ACCOUNTABSTRACTIONCONFIG_FLASHBOTSENDPOINTDefines the string URL for the flashbots bundle reception endpointhttps://relay.flashbots.net/
MaximumUserOperationPerSenderNETHERMIND_ACCOUNTABSTRACTIONCONFIG_MAXIMUMUSEROPERATIONPERSENDERDefines the maximum number of UserOperations that can be kept for each sender1
MinimumGasPriceNETHERMIND_ACCOUNTABSTRACTIONCONFIG_MINIMUMGASPRICEDefines the minimum gas price for a user operation to be accepted1
UserOperationPoolSizeNETHERMIND_ACCOUNTABSTRACTIONCONFIG_USEROPERATIONPOOLSIZEDefines the maximum number of UserOperations that can be kept in memory by clients200
WhitelistedPaymastersNETHERMIND_ACCOUNTABSTRACTIONCONFIG_WHITELISTEDPAYMASTERSDefines a comma separated list of the hex string representations of paymasters that are whitelisted by the node
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/aura.html b/docs/fundamentals/configuration/aura.html new file mode 100644 index 000000000..d3650d4f6 --- /dev/null +++ b/docs/fundamentals/configuration/aura.html @@ -0,0 +1,17 @@ + + + + + +Aura | Nethermind Documentation + + + + + +
+

Aura

PropertyEnv VariableDescriptionDefault
AllowAuRaPrivateChainsNETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINSIf 'true' then you can run Nethermind only private chains. Do not use with existing Parity AuRa chains.false
ForceSealingNETHERMIND_AURACONFIG_FORCESEALINGIf 'true' then Nethermind if mining will seal empty blocks.true
Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContractNETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACTIf 'true' then when using BlockGasLimitContractTransitions if the contract returns less than 2mln gas, then 2 mln gas is used.false
TxPriorityConfigFilePathNETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATHIf set then transaction priority rules are used when selecting transactions from transaction pool. This has higher priority then on chain contract rules. See more at contract details https://github.com/poanetwork/posdao-contracts/blob/master/contracts/TxPriority.solnull
TxPriorityContractAddressNETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESSIf set then transaction priority contract is used when selecting transactions from transaction pool. See more at https://github.com/poanetwork/posdao-contracts/blob/master/contracts/TxPriority.solnull
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/auramerge.html b/docs/fundamentals/configuration/auramerge.html new file mode 100644 index 000000000..9ad40bd6d --- /dev/null +++ b/docs/fundamentals/configuration/auramerge.html @@ -0,0 +1,17 @@ + + + + + +AuRaMerge | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/blocks.html b/docs/fundamentals/configuration/blocks.html new file mode 100644 index 000000000..eebe548d0 --- /dev/null +++ b/docs/fundamentals/configuration/blocks.html @@ -0,0 +1,17 @@ + + + + + +Blocks | Nethermind Documentation + + + + + +
+

Blocks

PropertyEnv VariableDescriptionDefault
ExtraDataNETHERMIND_BLOCKSCONFIG_EXTRADATABlock header extra data. 32-bytes shall be extra data max length.Nethermind
MinGasPriceNETHERMIND_BLOCKSCONFIG_MINGASPRICEMinimum gas premium for transactions accepted by the block producer. Before EIP1559: Minimum gas price for transactions accepted by the block producer.1
RandomizedBlocksNETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKSOnly used in NethDev. Setting this to true will change the difficulty of the block randomly within the constraints.false
TargetBlockGasLimitNETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMITBlock gas limit that the block producer should try to reach in the fastest possible way based on protocol rules. NULL value means that the miner should follow other miners.null
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/bloom.html b/docs/fundamentals/configuration/bloom.html new file mode 100644 index 000000000..e59cb2929 --- /dev/null +++ b/docs/fundamentals/configuration/bloom.html @@ -0,0 +1,17 @@ + + + + + +Bloom | Nethermind Documentation + + + + + +
+

Bloom

PropertyEnv VariableDescriptionDefault
IndexNETHERMIND_BLOOMCONFIG_INDEXDefines whether the Bloom index is used. Bloom index speeds up rpc log searches.true
IndexLevelBucketSizesNETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZESDefines multipliers for index levels. Can be tweaked per chain to boost performance.[4, 8, 8]
MigrationNETHERMIND_BLOOMCONFIG_MIGRATIONDefines if migration of previously downloaded blocks to Bloom index will be done.false
MigrationStatisticsNETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICSDefines if migration statistics are to be calculated and output.false
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/ethstats.html b/docs/fundamentals/configuration/ethstats.html new file mode 100644 index 000000000..df1fd214d --- /dev/null +++ b/docs/fundamentals/configuration/ethstats.html @@ -0,0 +1,17 @@ + + + + + +EthStats | Nethermind Documentation + + + + + +
+

EthStats

PropertyEnv VariableDescriptionDefault
ContactNETHERMIND_ETHSTATSCONFIG_CONTACTNode owner contact details displayed on the ethstats page.hello@nethermind.io
EnabledNETHERMIND_ETHSTATSCONFIG_ENABLEDIf 'true' then EthStats publishing gets enabled.false
NameNETHERMIND_ETHSTATSCONFIG_NAMENode name displayed on the given ethstats server.Nethermind
SecretNETHERMIND_ETHSTATSCONFIG_SECRETPassword for publishing to a given ethstats server.secret
ServerNETHERMIND_ETHSTATSCONFIG_SERVEREthStats server wss://hostname:port/api/ws://localhost:3000/api
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/healthchecks.html b/docs/fundamentals/configuration/healthchecks.html new file mode 100644 index 000000000..794bf03c7 --- /dev/null +++ b/docs/fundamentals/configuration/healthchecks.html @@ -0,0 +1,17 @@ + + + + + +HealthChecks | Nethermind Documentation + + + + + +
+

HealthChecks

PropertyEnv VariableDescriptionDefault
EnabledNETHERMIND_HEALTHCHECKSCONFIG_ENABLEDIf 'true' then Health Check endpoints is enabled at /healthfalse
LowStorageCheckAwaitOnStartupNETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUPFree disk space check on startup will pause node initalization until enough space is available.false
LowStorageSpaceShutdownThresholdNETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLDPercentage of available disk space below which node will shutdown. Zero to disable.1
LowStorageSpaceWarningThresholdNETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLDPercentage of available disk space below which a warning will be displayed. Zero to disable.5
MaxIntervalClRequestTimeNETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIMEMax request interval in which we assume that CL works in a healthy way300
MaxIntervalWithoutProcessedBlockNETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCKMax interval in seconds in which we assume that node processing blocks in a healthy waynull
MaxIntervalWithoutProducedBlockNETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCKMax interval in seconds in which we assume that node producing blocks in a healthy waynull
PollingIntervalNETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVALConfigures the UI to poll for healthchecks updates (in seconds)5
SlugNETHERMIND_HEALTHCHECKSCONFIG_SLUGThe URL slug on which Healthchecks service will be exposed/health
UIEnabledNETHERMIND_HEALTHCHECKSCONFIG_UIENABLEDIf 'true' then HealthChecks UI will be avaiable at /healthchecks-uifalse
WebhooksEnabledNETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLEDIf 'true' then Webhooks can be configuredfalse
WebhooksPayloadNETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOADPayload is the json payload that will be send on Failure and must be escaped.{"attachments":[{"color":"#FFCC00","pretext":"Health Check Status ⚠️","fields":[{"title":"Details","value":"More details available at /healthchecks-ui","short":false},{"title":"Description","value":"[[DESCRIPTIONS]]","short":false}]}]}
WebhooksRestorePayloadNETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOADRestorePayload is the json payload that will be send on Recovery and must be escaped.{"attachments":[{"color":"#36a64f","pretext":"Health Check Status 👍","fields":[{"title":"Details","value":"More details available at /healthchecks-ui","short":false},{"title":"description","value":"The HealthCheck [[LIVENESS]] is recovered. All is up and running","short":false}]}]}
WebhooksUriNETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURIThe Webhooks endpoint e.g. Slack WebHooksnull
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/hive.html b/docs/fundamentals/configuration/hive.html new file mode 100644 index 000000000..7879216bf --- /dev/null +++ b/docs/fundamentals/configuration/hive.html @@ -0,0 +1,17 @@ + + + + + +Hive | Nethermind Documentation + + + + + +
+

Hive

These items need only be set when testing with Hive (Ethereum Foundation tool)

PropertyEnv VariableDescriptionDefault
BlocksDirNETHERMIND_HIVECONFIG_BLOCKSDIRPath to a directory with additional blocks."/blocks"
ChainFileNETHERMIND_HIVECONFIG_CHAINFILEPath to a file with a test chain definition."/chain.rlp"
EnabledNETHERMIND_HIVECONFIG_ENABLEDEnabling hive for debugging purposefalse
GenesisFilePathNETHERMIND_HIVECONFIG_GENESISFILEPATHPath to genesis block."/genesis.json"
KeysDirNETHERMIND_HIVECONFIG_KEYSDIRPath to a test key store directory."/keys"
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/init.html b/docs/fundamentals/configuration/init.html new file mode 100644 index 000000000..e5575bbe7 --- /dev/null +++ b/docs/fundamentals/configuration/init.html @@ -0,0 +1,17 @@ + + + + + +Init | Nethermind Documentation + + + + + +
+

Init

PropertyEnv VariableDescriptionDefault
AutoDumpNETHERMIND_INITCONFIG_AUTODUMPAuto dump on bad blocks for diagnostics, Possible values [None, Receipts, Parity, Geth, All]Receipts
BaseDbPathNETHERMIND_INITCONFIG_BASEDBPATHBase directory path for all the nethermind databases."db"
ChainSpecPathNETHERMIND_INITCONFIG_CHAINSPECPATHPath to the chain definition file (Parity chainspec or Geth genesis file).chainspec/foundation.json
DiagnosticModeNETHERMIND_INITCONFIG_DIAGNOSTICMODEDiagnostics modesNone
DiscoveryEnabledNETHERMIND_INITCONFIG_DISCOVERYENABLEDIf 'false' then the node does not try to find nodes beyond the bootnodes configured.true
EnableUnsecuredDevWalletNETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLETIf 'true' then it enables the wallet / key store in the application.false
GenesisHashNETHERMIND_INITCONFIG_GENESISHASHHash of the genesis block - if the default null value is left then the genesis block validity will not be checked which is useful for ad hoc test/private networks.null
HiveChainSpecPathNETHERMIND_INITCONFIG_HIVECHAINSPECPATHPath to the chain definition file created by Hive for test purpousechainspec/test.json
IsMiningNETHERMIND_INITCONFIG_ISMININGIf 'true' then the node will try to seal/mine new blocksfalse
KeepDevWalletInMemoryNETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORYIf 'true' then any accounts created will be only valid during the session and deleted when application closes.false
KzgSetupPathNETHERMIND_INITCONFIG_KZGSETUPPATHKzg trusted setup file pathnull
LogDirectoryNETHERMIND_INITCONFIG_LOGDIRECTORYIn case of null, the path is set to [applicationDirectiory]\logslogs
LogFileNameNETHERMIND_INITCONFIG_LOGFILENAMEName of the log file generated (useful when launching multiple networks with the same log folder)."log.txt"
LogRulesNETHERMIND_INITCONFIG_LOGRULESOverrides for default logs in format LogPath:LogLevel;*null
MemoryHintNETHERMIND_INITCONFIG_MEMORYHINTA hint for the max memory that will allow us to configure the DB and Netty memory allocations.null
PeerManagerEnabledNETHERMIND_INITCONFIG_PEERMANAGERENABLEDIf 'false' then the node does not connect to newly discovered peers..true
ProcessingEnabledNETHERMIND_INITCONFIG_PROCESSINGENABLEDIf 'false' then the node does not download/process new blocks..true
RpcDbUrlNETHERMIND_INITCONFIG_RPCDBURLUrl for remote node that will be used as DB source when 'DiagnosticMode' is set to'RpcDb'
StaticNodesPathNETHERMIND_INITCONFIG_STATICNODESPATHPath to the file with a list of static nodes."Data/static-nodes.json"
WebSocketsEnabledNETHERMIND_INITCONFIG_WEBSOCKETSENABLEDDefines whether the WebSockets service is enabled on node startup at the 'HttpPort' - e.g. ws://localhost:8545/ws/json-rpctrue
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/jsonrpc.html b/docs/fundamentals/configuration/jsonrpc.html new file mode 100644 index 000000000..c1889c711 --- /dev/null +++ b/docs/fundamentals/configuration/jsonrpc.html @@ -0,0 +1,17 @@ + + + + + +JsonRpc | Nethermind Documentation + + + + + +
+

JsonRpc

PropertyEnv VariableDescriptionDefault
AdditionalRpcUrlsNETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLSDefines additional RPC urls to listen on. Example url format: http://localhost:8550http;wss
BufferResponsesNETHERMIND_JSONRPCCONFIG_BUFFERRESPONSESBuffer responses before sending them to client. This allows to set Content-Length in response instead of using Transfer-Encoding: chunked. This may degrade performance on big responses. Max buffered response size is 2GB, chunked responses can be bigger.false
CallsFilterFilePathNETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATHA path to a file that contains a list of new-line separated approved JSON RPC callsData/jsonrpc.filter
EnabledNETHERMIND_JSONRPCCONFIG_ENABLEDDefines whether the JSON RPC service is enabled on node startup. Configure host and port if default values do not work for you.false
EnabledModulesNETHERMIND_JSONRPCCONFIG_ENABLEDMODULESDefines which RPC modules should be enabled. Built in modules are: Admin, Clique, Consensus, Db, Debug, Deposit, Erc20, Eth, Evm, Health Mev, NdmConsumer, NdmProvider, Net, Nft, Parity, Personal, Proof, Subscribe, Trace, TxPool, Vault, Web3.[Eth, Subscribe, Trace, TxPool, Web3, Personal, Proof, Net, Parity, Health, Rpc]
EngineEnabledModulesNETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULESDefines which RPC modules should be enabled Execution Engine port. Built in modules are: Admin, Clique, Consensus, Db, Debug, Deposit, Erc20, Eth, Evm, Health Mev, NdmConsumer, NdmProvider, Net, Nft, Parity, Personal, Proof, Subscribe, Trace, TxPool, Vault, Web3.[Net, Eth, Subscribe, Web3]
EngineHostNETHERMIND_JSONRPCCONFIG_ENGINEHOSTHost for Execution Engine calls. Ensure the firewall is configured when enabling JSON RPC. If it does not work with 127.0.0.1 try something like 10.0.0.4 or 192.168.0.1"127.0.0.1"
EnginePortNETHERMIND_JSONRPCCONFIG_ENGINEPORTPort for Execution Engine calls. Ensure the firewall is configured when enabling JSON RPC.null
EthModuleConcurrentInstancesNETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCESNumber of concurrent instances for non-sharable calls (eth_call, eth_estimateGas, eth_getLogs, eth_newFilter, eth_newBlockFilter, eth_newPendingTransactionFilter, eth_uninstallFilter). This will limit load on the node CPU and IO to reasonable levels. If this limit is exceeded on Http calls 503 Service Unavailable will be returned along with Json RPC error. Defaults to number of logical processes.
GasCapNETHERMIND_JSONRPCCONFIG_GASCAPGas limit for eth_call and eth_estimateGas100000000
HostNETHERMIND_JSONRPCCONFIG_HOSTHost for JSON RPC calls. Ensure the firewall is configured when enabling JSON RPC. If it does not work with 127.0.0.1 try something like 10.0.0.4 or 192.168.0.1"127.0.0.1"
IpcUnixDomainSocketPathNETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATHThe path to connect a unix domain socket over.
JwtSecretFileNETHERMIND_JSONRPCCONFIG_JWTSECRETFILEPath to file with hex encoded secret for jwt authenticationkeystore/jwt-secret
MaxBatchResponseBodySizeNETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZEMax response body size when using batch requests, subsequent requests are trimmed30000000
MaxBatchSizeNETHERMIND_JSONRPCCONFIG_MAXBATCHSIZELimit batch size for batched json rpc call1024
MaxLoggedRequestParametersCharactersNETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERSLimits the Maximum characters printing to log for parameters of any Json RPC service requestnull
MaxRequestBodySizeNETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZEMax HTTP request body size30000000
MethodsLoggingFilteringNETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERINGDefines method names of Json RPC service requests to NOT log. Example: {"eth_blockNumber"} will not log "eth_blockNumber" requests.[engine_newPayloadV1, engine_newPayloadV2, engine_newPayloadV3, engine_forkchoiceUpdatedV1, engine_forkchoiceUpdatedV2]
PortNETHERMIND_JSONRPCCONFIG_PORTPort number for JSON RPC calls. Ensure the firewall is configured when enabling JSON RPC.8545
ReportIntervalSecondsNETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDSInterval between the JSON RPC stats report log300
RpcRecorderBaseFilePathNETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATHBase file path for diagnostic JSON RPC recorder."logs/rpc.{counter}.txt"
RpcRecorderStateNETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATEDefines whether the JSON RPC diagnostic recording is enabled on node startup. Do not enable unless you are a DEV diagnosing issues with JSON RPC. Possible values: None/Request/Response/All.None
TimeoutNETHERMIND_JSONRPCCONFIG_TIMEOUTJSON RPC' timeout value given in milliseconds.20000
WebSocketsPortNETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORTPort number for JSON RPC web sockets calls. By default same port is used as regular JSON RPC. Ensure the firewall is configured when enabling JSON RPC.8545
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/keystore.html b/docs/fundamentals/configuration/keystore.html new file mode 100644 index 000000000..398dacd8d --- /dev/null +++ b/docs/fundamentals/configuration/keystore.html @@ -0,0 +1,17 @@ + + + + + +KeyStore | Nethermind Documentation + + + + + +
+

KeyStore

PropertyEnv VariableDescriptionDefault
BlockAuthorAccountNETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNTAccount to be used by the block author / coinbase, to be loaded from keystore
CipherNETHERMIND_KEYSTORECONFIG_CIPHERSee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definitionaes-128-ctr
EnodeAccountNETHERMIND_KEYSTORECONFIG_ENODEACCOUNTAccount to be used by the node for network communication (enode), to be loaded from keystore. If neither this nor EnodeKeyFile is specified, the key for network communication will be autogenerated in 'node.key.plain' file.
EnodeKeyFileNETHERMIND_KEYSTORECONFIG_ENODEKEYFILEPath to key file to be used by the node for network communication (enode). If neither this nor EnodeAccount is specified, the key for network communication will be autogenerated in 'node.key.plain' file. If the file does not exist it will be generated.
IVSizeNETHERMIND_KEYSTORECONFIG_IVSIZESee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition16
KdfNETHERMIND_KEYSTORECONFIG_KDFSee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definitionscrypt
KdfparamsDklenNETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLENSee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition32
KdfparamsNNETHERMIND_KEYSTORECONFIG_KDFPARAMSNSee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition262144
KdfparamsPNETHERMIND_KEYSTORECONFIG_KDFPARAMSPSee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition1
KdfparamsRNETHERMIND_KEYSTORECONFIG_KDFPARAMSRSee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition8
KdfparamsSaltLenNETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLENSee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition32
KeyStoreDirectoryNETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORYDirectory to store keys in.keystore
KeyStoreEncodingNETHERMIND_KEYSTORECONFIG_KEYSTOREENCODINGSee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-DefinitionUTF-8
PasswordFilesNETHERMIND_KEYSTORECONFIG_PASSWORDFILESPassword files storing passwords to unlock the accounts from the UnlockAccounts configuration item[]
PasswordsNETHERMIND_KEYSTORECONFIG_PASSWORDSPasswords to use to unlock accounts from the UnlockAccounts configuration item. Only used when no PasswordFiles provided.[]
SymmetricEncrypterBlockSizeNETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZESee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition128
SymmetricEncrypterKeySizeNETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZESee https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition128
TestNodeKeyNETHERMIND_KEYSTORECONFIG_TESTNODEKEYPlain private key to be used in test scenarios
UnlockAccountsNETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTSAccounts to unlock on startup using provided PasswordFiles and Passwords[]
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/merge.html b/docs/fundamentals/configuration/merge.html new file mode 100644 index 000000000..9c3c7af79 --- /dev/null +++ b/docs/fundamentals/configuration/merge.html @@ -0,0 +1,17 @@ + + + + + +Merge | Nethermind Documentation + + + + + +
+

Merge

PropertyEnv VariableDescriptionDefault
BuilderRelayUrlNETHERMIND_MERGECONFIG_BUILDERRELAYURLURL to Builder Relay. If set when building blocks nethermind will send them to the relay.null
CollectionsPerDecommitNETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMITRequests the GC to release process memory back to OS. Accept values -1 which disables it, 0 which releases every time, and any positive integer which does it after that many EngineApi calls.75
CompactMemoryNETHERMIND_MERGECONFIG_COMPACTMEMORYReduces process used memory. Accept values No which disables it, Yes which compacts normal heaps, Full compacts large object heap too (only when SweepMemory is set to Gen2).Yes
EnabledNETHERMIND_MERGECONFIG_ENABLEDDefines whether the Merge plugin is enabled bundles are allowed.true
FinalTotalDifficultyNETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTYFinal total difficulty is total difficulty of the last PoW block. FinalTotalDifficulty >= TerminalTotalDifficulty.null
PrioritizeBlockLatencyNETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCYReduces block EngineApi latency by disabling Garbage Collection during EngineApi calls.true
SecondsPerSlotNETHERMIND_MERGECONFIG_SECONDSPERSLOTDeprecated since v1.14.7. Please use Blocks.SecondsPerSlot. Seconds per slot.12
SweepMemoryNETHERMIND_MERGECONFIG_SWEEPMEMORYReduces memory usage by forcing Garbage Collection between EngineApi calls. Accept values NoGc (-1), Gen0 (0), Gen1 (1), Gen2 (2).Gen1
TerminalBlockHashNETHERMIND_MERGECONFIG_TERMINALBLOCKHASHTerminal PoW block hash used for transition process.null
TerminalBlockNumberNETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBERTerminal PoW block number used for transition process.
TerminalTotalDifficultyNETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTYTerminal total difficulty used for transition process.null
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/metrics.html b/docs/fundamentals/configuration/metrics.html new file mode 100644 index 000000000..8b53bb979 --- /dev/null +++ b/docs/fundamentals/configuration/metrics.html @@ -0,0 +1,17 @@ + + + + + +Metrics | Nethermind Documentation + + + + + +
+

Metrics

Configuration of the metrics provided by a Nethermind node for both, the Prometheus and the dotnet-counters.

PropertyEnv VariableDescriptionDefault
CountersEnabledNETHERMIND_METRICSCONFIG_COUNTERSENABLEDIf 'true',the node publishes metrics using .NET diagnostics that can be collected with dotnet-counters.false
EnabledNETHERMIND_METRICSCONFIG_ENABLEDIf 'true',the node publishes various metrics to Prometheus Pushgateway at given interval.false
EnableDbSizeMetricsNETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICSIf set, will push db size metricstrue
ExposePortNETHERMIND_METRICSCONFIG_EXPOSEPORTIf set, the node exposes Prometheus metrics on the given port.null
IntervalSecondsNETHERMIND_METRICSCONFIG_INTERVALSECONDSDefines how often metrics are pushed to Prometheus5
NodeNameNETHERMIND_METRICSCONFIG_NODENAMEName displayed in the Grafana dashboard"Nethermind"
PushGatewayUrlNETHERMIND_METRICSCONFIG_PUSHGATEWAYURLPrometheus Pushgateway URL.
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/mev.html b/docs/fundamentals/configuration/mev.html new file mode 100644 index 000000000..9709a973c --- /dev/null +++ b/docs/fundamentals/configuration/mev.html @@ -0,0 +1,17 @@ + + + + + +Mev | Nethermind Documentation + + + + + +
+

Mev

PropertyEnv VariableDescriptionDefault
BundleHorizonNETHERMIND_MEVCONFIG_BUNDLEHORIZONDefines how long MEV bundles will be kept in memory by clients3600
BundlePoolSizeNETHERMIND_MEVCONFIG_BUNDLEPOOLSIZEDefines the maximum number of MEV bundles that can be kept in memory by clients200
EnabledNETHERMIND_MEVCONFIG_ENABLEDDefines whether the MEV bundles are allowed.false
MaxMergedBundlesNETHERMIND_MEVCONFIG_MAXMERGEDBUNDLESDefines the maximum number of MEV bundles to be included within a single block1
TrustedRelaysNETHERMIND_MEVCONFIG_TRUSTEDRELAYSDefines the list of trusted relay addresses to receive megabundles from as a comma separated string
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/mining.html b/docs/fundamentals/configuration/mining.html new file mode 100644 index 000000000..63ad3aff6 --- /dev/null +++ b/docs/fundamentals/configuration/mining.html @@ -0,0 +1,17 @@ + + + + + +Mining | Nethermind Documentation + + + + + +
+

Mining

PropertyEnv VariableDescriptionDefault
EnabledNETHERMIND_MININGCONFIG_ENABLEDDefines whether the blocks should be produced.false
ExtraDataNETHERMIND_MININGCONFIG_EXTRADATADeprecated since v1.14.6. Please use Blocks.ExtraDataValues you set here are forwarded to it. Conflicting values will cause Exceptions. Block header extra data. 32-bytes shall be extra data max length.Nethermind
MinGasPriceNETHERMIND_MININGCONFIG_MINGASPRICEDeprecated since v1.14.6. Please use Blocks.MinGasPrice Values you set here are forwarded to it. Conflicting values will cause Exceptions. Minimum gas premium for transactions accepted by the block producer. Before EIP1559: Minimum gas price for transactions accepted by the block producer.1
RandomizedBlocksNETHERMIND_MININGCONFIG_RANDOMIZEDBLOCKSDeprecated since v1.14.6. Please use Blocks.RandomizedBlocks Values you set here are forwarded to it. Conflicting values will cause Exceptions. Only used in NethDev. Setting this to true will change the difficulty of the block randomly within the constraints.false
TargetBlockGasLimitNETHERMIND_MININGCONFIG_TARGETBLOCKGASLIMITDeprecated since v1.14.6. Please use Blocks.TargetBlockGasLimit. Values you set here are forwarded to it. Conflicting values will cause Exceptions. Block gas limit that the block producer should try to reach in the fastest possible way based on protocol rules. NULL value means that the miner should follow other miners.null
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/network.html b/docs/fundamentals/configuration/network.html new file mode 100644 index 000000000..76a269aa1 --- /dev/null +++ b/docs/fundamentals/configuration/network.html @@ -0,0 +1,17 @@ + + + + + +Network | Nethermind Documentation + + + + + +
+

Network

PropertyEnv VariableDescriptionDefault
ActivePeersMaxCountNETHERMIND_NETWORKCONFIG_ACTIVEPEERSMAXCOUNT[OBSOLETE](Use MaxActivePeers instead) Max number of connected peers.50
BootnodesNETHERMIND_NETWORKCONFIG_BOOTNODESBootnodes
DiagTracerEnabledNETHERMIND_NETWORKCONFIG_DIAGTRACERENABLEDEnabled very verbose diag network tracing files for DEV purposes (Nethermind specific)false
DiscoveryDnsNETHERMIND_NETWORKCONFIG_DISCOVERYDNSUse tree is available through a DNS name. Keep it empty for the default of {chainName}.ethdisco.netnull
DiscoveryPortNETHERMIND_NETWORKCONFIG_DISCOVERYPORTUDP port number for incoming discovery connections. Keep same as TCP/IP port because using different values has never been tested.30303
EnableUPnPNETHERMIND_NETWORKCONFIG_ENABLEUPNPEnable automatic port forwarding via UPnPfalse
ExternalIpNETHERMIND_NETWORKCONFIG_EXTERNALIPUse only if your node cannot resolve external IP automatically.null
LocalIpNETHERMIND_NETWORKCONFIG_LOCALIPUse only if your node cannot resolve local IP automatically.null
MaxActivePeersNETHERMIND_NETWORKCONFIG_MAXACTIVEPEERSSame as ActivePeersMaxCount.50
MaxNettyArenaCountNETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT[TECHNICAL] Defines maximum netty arena count. Increasing this on high core machine without increasing memory budget may reduce chunk size so much that it causes significant netty huge allocation.8
MaxOutgoingConnectPerSecNETHERMIND_NETWORKCONFIG_MAXOUTGOINGCONNECTPERSEC[TECHNICAL] Max number of new outgoing connections per second. Default is 20.20
NettyArenaOrderNETHERMIND_NETWORKCONFIG_NETTYARENAORDER[TECHNICAL] Defines the size of a netty arena order. Default depends on memory hint.-1
OnlyStaticPeersNETHERMIND_NETWORKCONFIG_ONLYSTATICPEERSIf set to 'true' then no connections will be made to non-static peers.false
P2PPortNETHERMIND_NETWORKCONFIG_P2PPORTTPC/IP port number for incoming P2P connections.30303
PriorityPeersMaxCountNETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNTMax number of priority peers. Can be overwritten by value from plugin config.0
StaticPeersNETHERMIND_NETWORKCONFIG_STATICPEERSList of nodes for which we will keep the connection on. Static nodes are not counted to the max number of nodes limit.null
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/plugin.html b/docs/fundamentals/configuration/plugin.html new file mode 100644 index 000000000..647c69751 --- /dev/null +++ b/docs/fundamentals/configuration/plugin.html @@ -0,0 +1,17 @@ + + + + + +Plugin | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/pruning.html b/docs/fundamentals/configuration/pruning.html new file mode 100644 index 000000000..fb9e62004 --- /dev/null +++ b/docs/fundamentals/configuration/pruning.html @@ -0,0 +1,18 @@ + + + + + +Pruning | Nethermind Documentation + + + + + +
+

Pruning

Configuration of the pruning parameters (pruning is the process of removing some of the intermediary state nodes - it +saves some disk space but makes most of the historical state queries fail).

PropertyEnv VariableDescriptionDefault
AvailableSpaceCheckEnabledNETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLEDEnables available disk space check.true
CacheMbNETHERMIND_PRUNINGCONFIG_CACHEMB'Memory' pruning: Pruning cache size in MB (amount if historical nodes data to store in cache - the bigger the cache the bigger the disk space savings).1024
FullPruningCompletionBehaviorNETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIORDetermines what to do after Nethermind completes a full prune. 'None': does not take any special action. 'ShutdownOnSuccess': shuts Nethermind down if the full prune succeeded. 'AlwaysShutdown': shuts Nethermind down once the prune completes, whether it succeeded or failed.None
FullPruningDisableLowPriorityWritesNETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITESFull pruning uses low priority writes to prevent blocking block processing. If not needed, set this to true for faster full pruning.false
FullPruningMaxDegreeOfParallelismNETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM'Full' pruning: Defines how many parallel tasks and potentially used threads can be created by full pruning. -1 - number of logical processors, 0 - 25% of logical processors, 1 - full pruning will run on single thread. Recommended value depends on the type of the node. If the node needs to be responsive (its RPC or Validator node) then recommended value is the default value or below is recommended. If the node doesn't have much other responsibilities but needs to be reliably be able to follow the chain without any delays and produce live logs - the default value or above is recommended. If the node doesn't have to be responsive, has very fast I/O (like NVME) and the shortest pruning time is to be achieved, this can be set to the number of logical processors (-1).0
FullPruningMemoryBudgetMbNETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMBSet the memory budget used for the trie visit. Increasing this significantly reduces read iops requirement at expense of RAM. Default depend on network. Set to 0 to disable.4000
FullPruningMinimumDelayHoursNETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURSIn order to not exhaust disk writes, there is a minimum delay between allowed full pruning operations.240
FullPruningThresholdMbNETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB'Full' pruning: Defines threshold in MB to trigger full pruning, depends on 'Mode' and 'FullPruningTrigger'.256000
FullPruningTriggerNETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER'Full' pruning: Defines trigger for full pruning, manuel trigger is always supported via admin_prune RPC call. Either size of StateDB or free space left on Volume where StateDB is located can be configured as auto triggers. Possible values: 'Manual', 'StateDbSize', 'VolumeFreeSpace'.Manual
ModeNETHERMIND_PRUNINGCONFIG_MODESets pruning mode. Possible values: 'None', 'Memory', 'Full', 'Hybrid'.Hybrid
PersistenceIntervalNETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL'Memory' pruning: Defines how often blocks will be persisted even if not required by cache memory usage (the bigger the value the bigger the disk space savings)8192
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/receipt.html b/docs/fundamentals/configuration/receipt.html new file mode 100644 index 000000000..447c2dad7 --- /dev/null +++ b/docs/fundamentals/configuration/receipt.html @@ -0,0 +1,17 @@ + + + + + +Receipt | Nethermind Documentation + + + + + +
+

Receipt

PropertyEnv VariableDescriptionDefault
CompactReceiptStoreNETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTOREIf set to 'true' then reduce receipt db size at expense of rpc performance.true
CompactTxIndexNETHERMIND_RECEIPTCONFIG_COMPACTTXINDEXIf set to 'true' then reduce receipt tx index db size at expense of rpc performance.true
ReceiptsMigrationNETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATIONIf set to 'true' then receipts db will be migrated to new schema.false
StoreReceiptsNETHERMIND_RECEIPTCONFIG_STORERECEIPTSIf set to 'false' then transaction receipts will not be stored in the database after a new block is processed. This setting is independent from downloading receipts in fast sync mode.true
TxLookupLimitNETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMITNumber of recent blocks to maintain transaction index. 0 to never remove tx index. -1 to never index.2350000
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/sample-configuration.html b/docs/fundamentals/configuration/sample-configuration.html new file mode 100644 index 000000000..cc6690e4b --- /dev/null +++ b/docs/fundamentals/configuration/sample-configuration.html @@ -0,0 +1,17 @@ + + + + + +Sample configuration | Nethermind Documentation + + + + + +
+

Sample configuration

{
"Init": {
"ChainSpecPath": "chainspec/foundation.json",
"GenesisHash": "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
"BaseDbPath": "nethermind_db/mainnet",
"LogFileName": "mainnet.logs.txt",
"MemoryHint": 2048000000
},
"Network": {
"ActivePeersMaxCount": 100
},
"Sync": {
"FastSync": true,
"SnapSync": true,
"PivotNumber": 17701000,
"PivotHash": "0xecf98f6af857f3e0e7ef3aa3c392080f88ddea49cb71c11d56844303d708835a",
"PivotTotalDifficulty": "58750003716598352816469",
"FastBlocks": true,
"AncientBodiesBarrier": 11052984,
"AncientReceiptsBarrier": 11052984,
"FastSyncCatchUpHeightDelta": "10000000000"
},
"EthStats": {
"Server": "wss://ethstats.net/api"
},
"Metrics": {
"NodeName": "Mainnet"
},
"Blocks": {
"TargetBlockGasLimit": 30000000
},
"JsonRpc": {
"Enabled": true,
"Timeout": 20000,
"Host": "127.0.0.1",
"Port": 8545,
"AdditionalRpcUrls": [
"http://localhost:8551|http;ws|net;eth;subscribe;engine;web3;client"
]
},
"Merge": {
"Enabled": true
}
}
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/seq.html b/docs/fundamentals/configuration/seq.html new file mode 100644 index 000000000..3d4500799 --- /dev/null +++ b/docs/fundamentals/configuration/seq.html @@ -0,0 +1,18 @@ + + + + + +Seq | Nethermind Documentation + + + + + +
+

Seq

Configuration of the Prometheus + Grafana metrics publication. Documentation of the required setup is not yet ready (but +the metrics do work and are used by the dev team)

PropertyEnv VariableDescriptionDefault
ApiKeyNETHERMIND_SEQCONFIG_APIKEYAPI key used for log events ingestion to Seq instance
MinLevelNETHERMIND_SEQCONFIG_MINLEVELMinimal level of log events which will be sent to Seq instance.Off
ServerUrlNETHERMIND_SEQCONFIG_SERVERURLSeq instance URL."http://localhost:5341
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/sync.html b/docs/fundamentals/configuration/sync.html new file mode 100644 index 000000000..22efb3efc --- /dev/null +++ b/docs/fundamentals/configuration/sync.html @@ -0,0 +1,17 @@ + + + + + +Sync | Nethermind Documentation + + + + + +
+

Sync

PropertyEnv VariableDescriptionDefault
AncientBodiesBarrierNETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER[EXPERIMENTAL] Defines the earliest body downloaded in fast sync when DownloadBodiesInFastSync is enabled. Actual values used will be Math.Max(1, Math.Min(PivotNumber, AncientBodiesBarrier))0
AncientReceiptsBarrierNETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER[EXPERIMENTAL] Defines the earliest receipts downloaded in fast sync when DownloadReceiptsInFastSync is enabled. Actual value used will be Math.Max(1, Math.Min(PivotNumber, Math.Max(AncientBodiesBarrier, AncientReceiptsBarrier)))0
BlocksDbTuneDbModeNETHERMIND_SYNCCONFIG_BLOCKSDBTUNEDBMODE[EXPERIMENTAL] Optimize db for write during sync just for blocks db. Useful for turning on blobs file.EnableBlobFiles
DownloadBodiesInFastSyncNETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNCIf set to 'true' then the block bodies will be downloaded in the Fast Sync mode.true
DownloadHeadersInFastSyncNETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNCIf set to 'false' then fast sync will only download recent blocks.true
DownloadReceiptsInFastSyncNETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNCIf set to 'true' then the receipts will be downloaded in the Fast Sync mode. This will slow down the process by a few hours but will allow you to interact with dApps that execute extensive historical logs searches (like Maker CDPs).true
FastBlocksNETHERMIND_SYNCCONFIG_FASTBLOCKSIf set to 'true' then in the Fast Sync mode blocks will be first downloaded from the provided PivotNumber downwards. This allows for parallelization of requests with many sync peers and with no need to worry about syncing a valid branch (syncing downwards to 0). You need to enter the pivot block number, hash and total difficulty from a trusted source (you can use etherscan and confirm with other sources if you wan to change it).false
FastSyncNETHERMIND_SYNCCONFIG_FASTSYNCIf set to 'true' then the Fast Sync (eth/63) synchronization algorithm will be used.false
FastSyncCatchUpHeightDeltaNETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTARelevant only if 'FastSync' is 'true'. If set to a value, then it will set a minimum height threshold limit up to which FullSync, if already on, will stay on when chain will be behind network. If this limit will be exceeded, it will switch back to FastSync. In normal usage we do not recommend setting this to less than 32 as this can cause issues with chain reorgs. Please note that last 2 blocks will always be processed in FullSync, so setting it to less than 2 will have no effect.8192
FixReceiptsNETHERMIND_SYNCCONFIG_FIXRECEIPTS[ONLY FOR MISSING RECEIPTS ISSUE] Turns on receipts validation that checks for ones that might be missing due to previous bug. It downloads them from network if needed.If used please check that PivotNumber is same as original used when syncing the node as its used as a cut-off point.false
FixTotalDifficultyNETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY[ONLY TO FIX INCORRECT TOTAL DIFFICULTY ISSUE] Recalculates total difficulty starting from FixTotalDifficultyStartingBlock to FixTotalDifficultyLastBlock.false
FixTotalDifficultyLastBlockNETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK[ONLY TO FIX INCORRECT TOTAL DIFFICULTY ISSUE] Last block which total difficulty will be recalculated. If set to null equals to best known blocknull
FixTotalDifficultyStartingBlockNETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK[ONLY TO FIX INCORRECT TOTAL DIFFICULTY ISSUE] First block which total difficulty will be recalculated.1
MaxAttemptsToUpdatePivotNETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOTMax number of attempts (seconds) to update pivot block basing on Forkchoice message from Consensus Layer. Only for PoS chains.900
MaxProcessingThreadsNETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS[TECHNICAL] Specify max num of thread used for processing. Default is same as logical core count.0
NetworkingEnabledNETHERMIND_SYNCCONFIG_NETWORKINGENABLEDIf 'false' then the node does not connect to peers.true
NonValidatorNodeNETHERMIND_SYNCCONFIG_NONVALIDATORNODE[EXPERIMENTAL] Only for non validator nodes! If set to true, DownloadReceiptsInFastSync and/or DownloadBodiesInFastSync can be set to false.false
PivotHashNETHERMIND_SYNCCONFIG_PIVOTHASHHash of the pivot block for the Fast Blocks sync.null
PivotNumberNETHERMIND_SYNCCONFIG_PIVOTNUMBERNumber of the pivot block for the Fast Blocks sync.0
PivotTotalDifficultyNETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTYTotal Difficulty of the pivot block for the Fast Blocks sync (not - this is total difficulty and not difficulty).null
SnapSyncNETHERMIND_SYNCCONFIG_SNAPSYNCEnables SNAP sync protocol.false
SnapSyncAccountRangePartitionCountNETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNTNumber of account range partition to create. Increase snap sync request concurrency. Value must be between 1 to 256 (inclusive).8
StrictModeNETHERMIND_SYNCCONFIG_STRICTMODEDisable some optimization and run a more extensive sync. Useful for broken sync state but normally not neededfalse
SynchronizationEnabledNETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLEDIf 'false' then the node does not download/process new blocks.true
TuneDbModeNETHERMIND_SYNCCONFIG_TUNEDBMODE[EXPERIMENTAL] Optimize db for write during sync. Significantly reduce total writes written and some sync time if you are not network limited.Default
UseGethLimitsInFastBlocksNETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKSIf set to 'true' then in the Fast Blocks mode Nethermind generates smaller requests to avoid Geth from disconnecting. On the Geth heavy networks (mainnet) it is desired while on Parity or Nethermind heavy networks (Goerli, AuRa) it slows down the sync by a factor of ~4true
WitnessProtocolEnabledNETHERMIND_SYNCCONFIG_WITNESSPROTOCOLENABLEDEnables witness protocol.false
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/tracestore.html b/docs/fundamentals/configuration/tracestore.html new file mode 100644 index 000000000..06a3347d6 --- /dev/null +++ b/docs/fundamentals/configuration/tracestore.html @@ -0,0 +1,17 @@ + + + + + +TraceStore | Nethermind Documentation + + + + + +
+

TraceStore

PropertyEnv VariableDescriptionDefault
BlocksToKeepNETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEPDefines how many blocks counting from head are kept in the TraceStore, if '0' all traces of processed blocks will be kept.10000
DeserializationParallelizationNETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATIONMaximum parallelization when deserializing requests for trace_filter. 0 defaults to logical cores, set to something low if you experience too big resource usage.0
EnabledNETHERMIND_TRACESTORECONFIG_ENABLEDDefines whether the TraceStore plugin is enabled, if 'true' traces will come from DB if possible.false
TraceTypesNETHERMIND_TRACESTORECONFIG_TRACETYPESDefines what kind of traces are saved and kept in TraceStore. Available options are: Trace, Rewards, VmTrace, StateDiff or just All.Trace, Rewards
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/txpool.html b/docs/fundamentals/configuration/txpool.html new file mode 100644 index 000000000..f6985022f --- /dev/null +++ b/docs/fundamentals/configuration/txpool.html @@ -0,0 +1,17 @@ + + + + + +TxPool | Nethermind Documentation + + + + + +
+

TxPool

PropertyEnv VariableDescriptionDefault
GasLimitNETHERMIND_TXPOOLCONFIG_GASLIMITMax transaction gas allowed.null
HashCacheSizeNETHERMIND_TXPOOLCONFIG_HASHCACHESIZEMax number of cached hashes of already known transactions.It is set automatically by the memory hint.524288
PeerNotificationThresholdNETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLDDefines average percent of tx hashes from persistent broadcast send to peer together with hashes of last added txs.5
ReportMinutesNETHERMIND_TXPOOLCONFIG_REPORTMINUTESMinutes between reporting on current state of tx pool.null
SizeNETHERMIND_TXPOOLCONFIG_SIZEMax number of transactions held in mempool (more transactions in mempool mean more memory used2048
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/configuration/wallet.html b/docs/fundamentals/configuration/wallet.html new file mode 100644 index 000000000..09f7ece32 --- /dev/null +++ b/docs/fundamentals/configuration/wallet.html @@ -0,0 +1,17 @@ + + + + + +Wallet | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/fundamentals/database.html b/docs/fundamentals/database.html new file mode 100644 index 000000000..aeb382b5b --- /dev/null +++ b/docs/fundamentals/database.html @@ -0,0 +1,21 @@ + + + + + +Database | Nethermind Documentation + + + + + +
+

Database

Nethermind uses the RocksDB database to store state. By default the database is stored in the +same directory where the client binaries are. You can change it by providing a --baseDbPath config switch in the +command line, e.g../Nethermind.Runner --config goerli --baseDbPath /home/username/nethermind_db

After Nethermind is started, you will see multiple directories appearing in the baseDbPath directory.

Example of the DB directory on a freshly deployed Ubuntu VM with Nethermind.

DB DirectoryContent
blockInfosinformation about blocks at each level of the block tree (canonical chain and branches)
blocksblock bodies (block transactions and uncle data)
bloombloom indexes for fast log searches
canonicalHashTrieLES protocol related data
codecontract bytecodes
discoveryNodespeers discovered via discovery protocol - used for quick peering after restarts (you can copy this DB between nodes to speed up peering)
headersblock headers only
pendingTx(this DB is wiped out on each restart) 2nd level cache of pending transactions / mempool (1st level is in memory)
peersstores additional sync peers information (like peer reputation) - you can copy this DB between nodes to speed up peering on fresh sync
receiptstransaction receipts data
stateblockchain state including accounts and contract storage (Patricia trie nodes)

You can use rsync between your nodes to clone the database (One of our users copied entire 4.5TB archive state this +way while the node was running and only stopped the node for the very last stage of rsync ). You can also simply copy +the database between Unix and Windows systems (and most likely macOS).

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/how-to-reduce-database-size.html b/docs/fundamentals/how-to-reduce-database-size.html new file mode 100644 index 000000000..537454281 --- /dev/null +++ b/docs/fundamentals/how-to-reduce-database-size.html @@ -0,0 +1,28 @@ + + + + + +How to reduce database size | Nethermind Documentation + + + + + +
+

How to reduce database size

The Nethermind database can experience substantial growth over time, starting from an initial size of approximately 650 +GB. As a result, many node-setups are configured to run on 1TB disks. However, even with the application of settings +designed to slow the growth rate, these disks may eventually run out of free space.

Current options to reduce db size are:

  1. Re-sync database from scratch
  2. Full pruning

The table below presents a short comparison of these methods including possible fine-tuning of each method. Data was +fetched from a node running on a machine with the below specifications:\ +\ +Node Version: 1.18.0\ +Consensus Client: Lighthouse\ +CPU: AMD EPYC 7713 64-Core Processor (16 cores allocated for this VM)\ +RAM: 64GB\ +Disk Size: 1.2 TB\ +IOPS of the disk*: 70,000 - 80,000 IOPS (results vary in this range)

MetricResyncFull PruningFull Pruning + Memory Budget (4 GB)
Time of execution~4h~24h~12h
Minimum free disk spaceN/A - you can execute resync even if there is 0 free space (avoid such case)250 GB250 GB
Attestation rate drop100% - no attestation rewards during that time or highly reduced5-10% during that time.TBC - not enough data yet
Average block processing time of new blocks during processN/A - new blocks are being processed after state but are significantly slower until OldBodies and OldReceipts are downloaded. Afterwards, average about 0.35s0.7s1.0s
Is node online during process?No - unless State is syncedYes - node follows chain and all modules are still enabled.Yes - node follows chain and all modules are still enabled.
info

Command used for testing IOPS of disk:\ +fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/how-to-reduce-database-size/full-pruning.html b/docs/fundamentals/how-to-reduce-database-size/full-pruning.html new file mode 100644 index 000000000..2bbfca345 --- /dev/null +++ b/docs/fundamentals/how-to-reduce-database-size/full-pruning.html @@ -0,0 +1,98 @@ + + + + + +Full Pruning | Nethermind Documentation + + + + + +
+

Full Pruning

Overview

Full Pruning pertains to the elimination or cleanup of obsolete historical data to optimize disk space. Clients are +responsible for maintaining the world state, which comprises a database that portrays the current Ethereum network +status. The world state encompasses accounts, contracts, and other information.

The goal of Full Pruning is to reduce disk requirements by storing only the current world state and removing historical +data. This differs from archive nodes that retain complete transaction and state history. Full Pruning is useful for +users who don't require historical data and prefer to interact solely with the current state of the network. However, +Full Pruning may limit the client's ability to fulfill requests that depend on historical information.

How it works

During synchronization using the Snap Sync method, the Nethermind client produces a local copy of the Ethereum Network +state, which typically amounts to approximately 160 GB (state database). Entire database may rise up to 600-650GB. +Although this size increases by around 30 GB each week, certain historical data is retained that is not necessary for +node operation or to maintain a current Ethereum state.

When Full Pruning is activated and initiated, it conducts a thorough examination of the entire state tree to determine +which data is no longer required and can be treated as historical. It then determines which information corresponds to +the current state, and duplicates it alongside the existing version. During verification of each node in the state, the +new pruned state replaces the previous one. Once the verifier confirms that everything is functioning correctly, the old +state database is eliminated, resulting in significant disk space savings. As a result, the size of the database will be +close to its initial size again.

Preparation for Full Pruning

Because Full Pruning is executed while the node is connected to the network, it can affect the performance of the node. +The process can consume significant amounts of RAM, CPU, and disk resources, which can impact block processing time. +This, in turn, can lead to reduced rewards for Validator setups, particularly for PoS chains.

Currently, Full Pruning takes between 20 to 30 hours to complete, although the duration may vary based on the user's +hardware configuration. To ensure that the process runs smoothly, a minimum of 200 GB of free disk space is required. +However, it's recommended to have at least 300 GB or more of free disk space.

Do not enable Full Pruning on an Archive node, as these are two opposing features. Archive nodes are designed to store +complete historical data, whereas Full Pruning eliminates it. To ensure that Pruning.Mode is disabled for +both InMemory and Full, set the flag Pruning.Mode=None.

How to configure Full Pruning

As a very first point please review a Pruning configuration options from this documentation +page: pruning.md.

To activate the Full Pruning feature, you must set either the Pruning.Mode=Hybrid or Pruning.Mode=Full flag for your +node.

info

Setting Pruning.Mode=Hybrid enables both InMemory and Full modes. InMemory mode helps the node grow at a slower +rate compared to Pruning.Mode=Full. With this configuration, Full Pruning is executed less frequently, promoting +healthier disk operation. Since Full Pruning is hardware-intensive, this configuration is also beneficial for +attestation results.

The next step is to determine the trigger conditions for Full Pruning. Currently, there are three options available:

  1. Manual
  2. Size of state database
  3. Amount of free disk space

Below is a brief explanation of each option.

Manual trigger

Manual mode enables Full Pruning to be triggered only upon request, providing full control over this functionality. To +configure this mode, add the following flags to your node: --Pruning.Mode=Hybrid --Pruning.FullPruningTrigger=Manual.

Additionally, you can add an Admin module to your JsonRPC to +execute #admin_prune command. Here's how +to do it:

  1. Add Admin module to EnabledModules on current JsonRpc port (below example - append Admin as last value if you are +overriding it already):\ +JsonRpc.EnabledModules=[Eth, Subscribe, Trace, TxPool, Web3, Personal, Proof, Net, Parity, Health, Rpc, Admin]
  2. Create a separate port only for Admin module:\ +JsonRpc.AdditionalRpcUrls=http://127.0.0.1:8555|http|admin

Now restart a node and if everything is properly configured, you should be able to +trigger #admin_prune command and Full +Pruning should +be started.

caution

One potential disadvantage of Manual mode is that if Full Pruning is not triggered in time (due to insufficient disk +space), it cannot be executed. In such cases, the only option to free up disk space would be to resync the node from +scratch.

Size of state database

StateDbSize mode enables Full Pruning to be triggered automatically when the state database reaches a specified size. +To enable this mode, add the following +flags: --Pruning.Mode=Hybrid --Pruning.FullPruningTrigger=StateDbSize --Pruning.FullPruningThresholdMb=256000, where +256000 should be set based on current requirements.

With this configuration, Full Pruning will be triggered automatically whenever the state database size exceeds 256000 +MB (250 GB). Since the state database initially has around 160 GB, pruning will be triggered when the database size +grows beyond 90 GB.

info

To avoid unexpected behavior and ensure that Full Pruning can be completed in full, it's recommended to set the +threshold value to trigger pruning before the free disk space drops below 250 GB as a minimum. This ensures that there +is sufficient free disk space available for the Full Pruning process.

Free disk space left on machine

This is a recommended approach as it ensures, that pruning will be executed on time

VolumeFreeSpace mode allows Full Pruning to be triggered when the amount of free disk space reaches a selected +minimum. To enable this mode, add the following +flags: --Pruning.Mode=Hybrid --Pruning.FullPruningTrigger=VolumeFreeSpace--Pruning.FullPruningThresholdMb=256000, +where 256000 should be set based on current requirements. However, it should never be set below the default value of

This configuration will trigger Full Pruning whenever the amount of free disk space drops to 250 GB. This ensures that +pruning is invoked as infrequently as possible while also ensuring that there is always sufficient free space available +to trigger it.

danger

It's recommended not to set the value below 250 GB for stability reasons. In reality, Full Pruning should require +approximately the same amount of space as a fresh state database (around 160 GB), but it also needs a threshold for +processing and other operations since it creates a copy of the existing state database. Therefore, it's essential to +maintain a minimum amount of free disk space to ensure stable and reliable pruning performance.

Monitoring progress of Full Pruning

When Full Pruning is triggered correctly, several messages will be visible in the logs of the Nethermind process.

Very first ones should be:

Full Pruning Ready to start: pruning garbage before state BLOCK_NUMBER with root ROOT_HASH.\ +WARN: Full Pruning Started on root hash ROOT_HASH: do not close the node until finished or progress will be lost.

From that moment ensure that no restarts will be performed on a node to ensure that Full pruning will be done properly. +After few minutes first logs with progress would start to appear:

Full Pruning In Progress: 00:00:57.0603307 1.00 mln nodes mirrored.\ +Full Pruning In Progress: 00:01:40.3677103 2.00 mln nodes mirrored.\ +Full Pruning In Progress: 00:02:25.6437030 3.00 mln nodes mirrored.

Pruning may take even more than 30 hours (this depends on CPU and IO operations on disk).

Whenever pruning will be completed, there will be a log message:

Full Pruning Finished: 15:25:59.1620756 1,560.29 mln nodes mirrored.

As you can notice, on this example it took around 15 hours.

info

Since the amount of mirrored nodes is not a static value, it's not possible to provide a simple progress indicator in +percentage. Therefore, the approximate value given should be used to determine when Full Pruning is expected to be +completed.

Additional settings

FullPruningMemoryBudgetMb

The FullPruningMemoryBudgetMb configuration parameter controls the memory budget allocated for the trie visit during +the full pruning process. By increasing this value, the number of required read IOPS (Input/Output Operations Per +Second) can be significantly reduced, which results in a faster full pruning operation. However, this improvement comes +at the expense of increased RAM usage.\ +\ +Assuming your system has a total of 64GB of RAM, with the application, CL client, and system expenses consuming 20GB, +you need to determine the maximum value for FullPruningMemoryBudgetMb while ensuring that the system remains stable +and respecting the given limit.

In this case, you have 44GB (64GB - 20GB) of available RAM for increasing the FullPruningMemoryBudgetMb value. To +calculate the maximum value in megabytes, multiply the available RAM by 1024 (since 1GB = 1024MB):

44GB * 1024MB/GB = 45056MB
info

Setting the FullPruningMemoryBudgetMb value higher than 16GB may not provide any additional performance benefits.

However, there is a recommendation that the value of FullPruningMemoryBudgetMb should not be higher than 16GB. So, +considering this guideline, you can set the FullPruningMemoryBudgetMb value to a maximum of 16GB, which is equivalent +to:

16GB * 1024MB/GB = 16384MB

To apply this value, update the configuration file as follows:

Pruning.FullPruningMemoryBudgetMb=16384

Please note that this example assumes that the remaining 44GB of RAM is sufficient for the full pruning memory budget. +Depending on the specific use case and system requirements, it may be necessary to further adjust the value to optimize +performance and resource usage.

FullPruningCompletionBehavior

This setting determines the behavior of the node after Full Pruning has completed. By default, the node will continue to +progress as usual. However, if the user wishes to shut down the node after Full Pruning has completed, there are two +options available:

  1. None: No special action will be taken.
  2. ShutdownOnSuccess: Nethermind will shut down if the Full Pruning process is successful.
  3. AlwaysShutdown: Nethermind will shut down once Full Pruning completes, regardless of whether it succeeded or +failed.

FullPruningMaxDegreeOfParallelism

This setting determines the number of parallel tasks and threads that can be used by Full Pruning:

  1. 0: the number of logical processors
  2. 1: Full Pruning will run on a single thread.

The recommended value depends on the type of node being used. If the node needs to be responsive (e.g., RPC or Validator +node), it's recommended to use a value below the number of logical processors. If the node doesn't have many other +responsibilities but needs to reliably follow the chain without delays and produce live logs, the default value is +recommended. If the node doesn't need to be responsive, has very fast I/O (such as NVME), and the shortest pruning time +is desired, this can be set to 2-3 times the number of logical processors.

Side notes

During the Full Pruning process, several things should be kept in mind:

  1. Full Pruning is a very heavy task, but it's performed in the background, so the node continues to progress and follow +the chain.
  2. Due to the heaviness of the task, it may affect validator rewards effectiveness, but since it's executed only once +every few months, it shouldn't have a significant impact on overall results (we've experienced approximately 5-10% +loss of rewards during Full Pruning).
  3. Ensure that your disk has at least 250 GB of free space after syncing the node. Otherwise, Full Pruning will never +complete successfully.
  4. Several things can be done to reduce the size of the database after syncing (such as setting AncientBarriers to a +proper value higher than 0, using CL which requires less disk space, and setting logs to the lowest level to avoid +log spamming).
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch.html b/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch.html new file mode 100644 index 000000000..28d61c7ef --- /dev/null +++ b/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratch.html @@ -0,0 +1,39 @@ + + + + + +Resync database from scratch | Nethermind Documentation + + + + + +
+

Resync database from scratch

Resyncing a Nethermind Node

This guide explains how to resync a Nethermind node using the existing Pivot block or updating it to a more recent one.

Steps to Resync a Nethermind Node

  1. Stop the Nethermind node: If your Nethermind node is currently running, stop it to ensure that no new data is +being written to the database during the resync process.
  2. Delete the existing database: Navigate to the Nethermind data directory. The location of this directory depends +on how Nethermind was installed and your configuration settings. Inside the data directory, find the nethermind_db +folder and delete the mainnet subfolder to remove the existing database for the mainnet.
  3. Update the configuration file (optional): If you want to change any configuration settings before resyncing the +node, edit the mainnet.cfg file located in the Nethermind directory. For example, you might want to adjust the +pruning settings or specify a different network.
  4. Update the Pivot block (optional)\
    danger

    Only for versions before 1.19.0 where Auto-Pivot approach was introduced

    1. Using Etherscan: If you want to speed up the syncing process, you can update the Pivot block to a more recent +one. To do this, find the Sync section in the mainnet.cfg file and update the PivotNumber and PivotHash +fields to match a recent "finalized" block number and its corresponding hash. You can obtain this information from +a block explorer such as Etherscan.\ +\ +Using block number 17165278 from Etherscan:

       { 
      "PivotNumber": 17165278,
      "PivotHash": "0xa665315efd923f3b11215feee09a9d3e13c5e6ee602fa19b642824682ec0a752"
      }
    2. Using Nethermind's GitHub: Alternatively, you can update the Pivot block by referring to +the Nethermind's mainnet.cfg file on GitHub. +The Pivot block is periodically bumped to the HEAD-8192 block of the mainnet chain. Copy the PivotNumber +and PivotHash values from the GitHub file and update your local mainnet.cfg file accordingly.

  5. Restart the Nethermind node: Start the Nethermind node again to initiate the resync process. The node will begin +syncing from the existing Pivot block or the specified updated Pivot block, downloading and processing all the blocks +in the blockchain.

To ensure that your Nethermind node is resyncing, you can monitor the logs for the node's progress. The logs will +display information about the block processing, synchronization status and OldHeaders being processed. By observing +the increasing block numbers and synchronization messages in the logs, you can confirm that the resync process is active +and working as expected.

Old Headers 0 / 17154000 | queue 0 | current 0.00bps | total 0.00bps

Old Headers 768 / 17154000 | queue 0 | current 766.07bps | total 762.49bps

Beacon Headers from block 17154001 to block 17169722 | 960 / 15722 | queue 4992 | current 0.00bps | total +40622848.83bps

Old Headers 9024 / 17154000 | queue 0 | current 576.40bps | total 1286.40bps

Beacon Headers from block 17154001 to block 17169723 | 9024 / 15723 | queue 6698 | current 2694.81bps | total +3882943.63bps\ +Downloaded 17154031 / 17172359 | current 0.00bps | total 0.00bps

Downloaded 17154062 / 17169724 | current 0.00bps | total 2.88bps

Keep in mind that resyncing a Nethermind node can take a considerable amount of time. It depends on your hardware, +internet connection, and the size of the blockchain.

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/logs/logging-configuration.html b/docs/fundamentals/logs/logging-configuration.html new file mode 100644 index 000000000..c5e52283a --- /dev/null +++ b/docs/fundamentals/logs/logging-configuration.html @@ -0,0 +1,20 @@ + + + + + +Logging Configuration | Nethermind Documentation + + + + + +
+

Logging Configuration

Log config file location

Logging in Nethermind is done via NLog library that can be configured by editing the NLog.config file.

Environment TypeNLog.config location
built from src - Debug modesrc\Nethermind\Nethermind.Runner\bin\Debug\netcoreapp3.1\NLog.config
built from src - Release modesrc\Nethermind\Nethermind.Runner\bin\Release\netcoreapp3.1\NLog.config
PPA/usr/share/nethermind/NLog.config
Docker/nethermind/NLog.config
from downloads pagetop level directory after unzipping the package
from GitHub releases pagetop level directory after unzipping the package
dAppNode? [to be documented]

Log config file syntax

Detailed NLog configuration options can be found +here: https://nlog-project.org/config/

Config or CLI log rules

Simple logging rules can be added through configuration file or command line argument.

For example this would add Trace level logs to any logger under Synchronization module and Debug level logs +for BlockTree from Blockchain module:\ +--Init.LogRules Synchronization.*:Trace;Blockchain.BlockTree:Debug

Global logging override

Additionally there are global logging override that you can use temporarily:

Command line overrideLog level
./Nethermind.Runner --config mainnet --log TRACETRACE
./Nethermind.Runner --config mainnet --log DEBUGDEBUG
./Nethermind.Runner --config mainnet --log INFOINFO
./Nethermind.Runner --config mainnet --log WARNWARN
./Nethermind.Runner --config mainnet --log ERRORERROR

JSON RPC logging level

This can be done by including these lines in the logging configuration file:

<logger name="JsonRpc.*" minlevel="Error" writeTo="file-async"/>
<logger name="JsonRpc.*" minlevel="Error" writeTo="auto-colored-console-async" final="true"/>
<logger name="JsonRpc.*" final="true"/>

Enterprise Logging

See how to configure Seq here

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/logs/logs.html b/docs/fundamentals/logs/logs.html new file mode 100644 index 000000000..1749dba61 --- /dev/null +++ b/docs/fundamentals/logs/logs.html @@ -0,0 +1,37 @@ + + + + + +Explaining Nethermind logs | Nethermind Documentation + + + + + +
+

Explaining Nethermind logs

You can check the supported operating systems, architectures and hardware requirements +here: system-requirements.md

After the node starts, you will see some initial info about the node and then the sync will start. Görli fast sync uses +a fast blocks sync mode initially. The fast blocks sync picks some known pivot block from the past and +downloads headers, bodies, and receipts downwards all the way to genesis block. All blocks from 0 to +the pivot block are showed as Old Headers in the fast blocks sync logs. The console display shows the number +growing from 0 to pivot, but this is just to make the display more user-friendly.

You will see some information about the sync progress, like below:

  1. Shows the number of already downloaded headers, bodies and receipts under the name Downloaded out of all to +be downloaded in the fast blocks stage.
  2. Shows the current queue of already downloaded blocks, headers and receipts waiting for being saved to the +database.
  3. Shows the current download speed (blocks per second - bps).
  4. Shows the average download speed (blocks per second - bps).

Fast blocks sync logs

When the fast blocks stage finishes, there will be some period of downloading blocks between the pivot and +thelatest blocks which will have some additional info:

  1. Shows the last entry from the fast blocks stage.
  2. Shows the mode transition moment.
  3. Displays the speed (in blocks per second) of all headers, bodies and receipts at the same time.
  4. Additional info will appear every 30000 blocks with information about the Görli epoch being stored.

Görli fast sync logs

After the fast sync part finished, the node will transition to the state sync stage when the state trie is being +downloaded. Much information is displayed about the progress, as this process may take a long time on mainnet (a few +hours).

  1. Total elapsed time in state sync is displayed.
  2. The total percentage of downloaded DB size is displayed (on mainnet the sync finishes around 34GB in March 2020, on +Görli around 800MB).
  3. branches stands for the percentage of downloaded branches.
  4. Download speed in kilobytes per second is displayed.
  5. accounts stands for the number of accounts data downloaded already.
  6. nodes stands for the number of Patricia trie nodes downloaded by the sync process.
  7. diagnostic shows the time spent in the DB write / read access. The higher the value, the worse. It may get much +worse if you restart the node during the sync process, as we need to recreate some caches then by reading data from +the DB.

Görli state sync logs

When the state sync is nearing completion, you may see a series of branch sync information reloading many times from +0% to nearly 100%. This is the node trying to retrieve the few remaining state nodes and progressing with the head block +rapidly:

Görli branch sync logs

At some point, the entire state is downloaded and the node enters the full sync mode and will allow you to issue CLI / +Web3 queries and send / receive transactions🥳

  1. The root is saved at the moment when the entire Patricia trie is downloaded.
  2. We also clearly state that the node transitions to the full sync.
  3. When you see the block being processed, then you are in the full sync and the newly arrived block is being +calculated.
  4. Every two minutes you will see a summary of connected peers with their client version, IP address, highest synced +block, and data download speeds.

Görli full sync logs

Also, every now and then, a peer report will appear like below:

  1. First bracket is for Allocated contexts. It has possible values of H for Headers, B for Bodies, R for +Receipts, N for State, S for Snap, and W for Witness.
  2. Second bracket is for Sleeping contexts. It has possible values of H for Headers, B for Bodies, R for +Receipts, N for State, S for Snap, and W for Witness.
  3. Third bracket contains Peer Info.
  4. Fourth bracket is for Speeds as Follows:
    • Latency
    • Headers Transfer
    • Bodies Transfer
    • Receipts Transfer
    • Node Data Transfer
    • Snap Ranges Transfer
  5. Fifth bracket is for Client Info like Client Name, Client Version, Operating System and Language Version.
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/private-networks.html b/docs/fundamentals/private-networks.html new file mode 100644 index 000000000..571f69097 --- /dev/null +++ b/docs/fundamentals/private-networks.html @@ -0,0 +1,35 @@ + + + + + +Private Networks | Nethermind Documentation + + + + + +
+

Private Networks

It is possible to configure a private network (private blockchain) using Nethermind nodes. Before you setup a private +network you will need to make a few decisions. One of them is choosing a consensus protocol that will be used for +securing the network.

Consensus Algorithms

Nethermind supports the following consensus algorithms:

  • ethash (PoW)
  • AuRa (PoA)
  • Clique (PoA)
  • NethDev (debug / dev)

PoW

In the proof of work consensus algorithm some of the nodes participate in a race to mine a new block by solving a +mathematical puzzle. The difficulty of the puzzle (the amount of computation needed to find a solution) is adjusted so +as to make blocks appear with some average frequency (every 15 seconds on the Ethereum mainnet). PoW is currently used +to secure the public Ethereum mainnet and the Ropsten testnet. The only mining algorithm used for PoW in Ethereum is +called ethash and is designed to be strict memory hard +(see Strict Memory Hard Hashing Functions).

Clique

Clique is an implementation of the Proof of Authority (PoA) consensus algorithm. The idea behind PoA is to choose a +group of nodes within the network with authority to create (seal) new blocks. In Clique such nodes are called signers +and after the initial setup signers can vote to add new signers to the group or to remove any of the existing signers. +Clique is currently supported by Geth, Parity, Nethermind and Pantheon and is used to secure the Goerli and Rinkeby +testnets.

AuRa

AuRa is another implementation of the Proof of Authority consensus algorithm. It is currently only supported by +Nethermind and Parity Ethereum client. Aura is used to secure the Kovan testnet and the POA Network.

NethDev (we also call it Spaceneth)

NethDev is a very simple consensus algorithm (or to better describe it - lack of consensus algorithm). NethDev can be +used for setting up nodes for development and testing purposes. On the NethDev network any node can create a block with +transactions and as long as it is a valid Ethereum block all other nodes will accept it.

Configuration

Nethermind uses the same format chainspec files that can be used for setting up private networks in Parity. Most of the +elements of the chainspec files are supported by Nethermind:

  • consensus engine and its parameters (to choose between Ethash, Clique, AuRa or NethDev)
  • genesis block spec
  • EIP transitions
  • initial account allocations
  • bootnodes

The following elements are NOT supported at the moment:

  • hardcoded sync block hashes
  • precompile definitions and precompile activation blocks

You can find below links to some of the chainspec files used to define various Ethereum networks:

  • foundation - +the public Ethereum mainnet
  • goerli - +the new Clique based testnet
  • spaceneth - +a private network example with NethDev
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain.html b/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain.html new file mode 100644 index 000000000..2fa62b47b --- /dev/null +++ b/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chain.html @@ -0,0 +1,25 @@ + + + + + +How to setup a Nethermind only Clique based chain | Nethermind Documentation + + + + + +
+

How to setup a Nethermind only Clique based chain

TL;DR

Download a script that will do all the steps described below for you. It will prompt you 2 things:

  • Confirm installation of required packages
  • The number of Validators you wish to run in your private network

Script can be +found here

or use this command to download it:

wget https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/private-networking/clique-validators.sh

Finally give the script permissions and run it (script requires sudo privileges):

chmod +x clique-validators.sh
./clique-validators.sh

Prerequisites

  • Linux bash shell
  • Docker-compose
  • Docker
  • jq
  • openssl
sudo apt-get install -y docker-compose docker.io jq openssl

Manual setup

info

All these steps are automated and written in the above clique-validators.sh script.

In this setup we will create a private network of 3 Nethermind nodes running Clique consensus algorithm.

  • create separate directory where we will store all files
mkdir private-networking
cd private-networking
  • create folders for each node and genesis
mkdir node_1 node_2 node_3 genesis
  • download chainspec file with clique engine and place it in genesis folder (we will be using goerli chainspec in this +example)
wget https://raw.githubusercontent.com/NethermindEth/nethermind/09389fc28b37605acc5eaed764d3e973969fe319/src/Nethermind/Chains/goerli.json
cp goerli.json genesis/goerli.json
  • create subfolders in each node folder
mkdir node_1/configs node_2/configs node_3/configs
  • create a static-nodes.json file and place it in working directory
cat <<EOF > static-nodes.json
[

]
EOF
  • create config.cfg file and place it in node_1/configs subfolders (do this for node_2 and node_3 as well)
cat <<EOF > node_1/configs/config.cfg
{
"Init": {
"WebSocketsEnabled": false,
"StoreReceipts" : true,
"EnableUnsecuredDevWallet": true,
"IsMining": true,
"ChainSpecPath": "/config/genesis/goerli.json",
"BaseDbPath": "nethermind_db/clique",
"LogFileName": "clique.logs.txt",
"StaticNodesPath": "Data/static-nodes.json"
},
"Network": {
"DiscoveryPort": 30300,
"P2PPort": 30300,
"LocalIp": "10.5.0.2",
"ExternalIp": "10.5.0.2"
},
"JsonRpc": {
"Enabled": true,
"Host": "10.5.0.2",
"Port": 8545
},
"KeyStoreConfig": {
"TestNodeKey": "8687A55019CCA647F6C063F530D47E9A90725D62D853F4B973E589DB24CA9305"
}
}
EOF

For each node you will need to change following items in configuration:

  • TestNodeKey should be a 64 character length alphanumeric string. Can be generated with openssl for example (openssl +rand -hex 32).
  • LocalIp, ExternalIp and Host should have the same value and be incremented for each node e.g. 10.5.0.3, 10.5.0.4 +and so on and so forth.

Copy docker-compose file and place it in working directory.

version: "3.5"
services:

node_1:
image: nethermind/nethermind:1.10.17
command: --config config
container_name: node_1
volumes:
- ./genesis:/config/genesis
- ./node_1/configs/config.cfg:/nethermind/configs/config.cfg
- ./static-nodes.json:/nethermind/Data/static-nodes.json
- ./node_1/db/clique:/nethermind/nethermind_db/clique
- ./node_1/keystore:/nethermind/keystore
ports:
- 0.0.0.0:8547:8545
networks:
vpcbr:
ipv4_address: 10.5.0.2

node_2:
image: nethermind/nethermind:1.10.17
command: --config config
container_name: node_2
volumes:
- ./genesis:/config/genesis
- ./node_2/configs/config.cfg:/nethermind/configs/config.cfg
- ./static-nodes.json:/nethermind/Data/static-nodes.json
- ./node_2/db/clique:/nethermind/nethermind_db/clique
- ./node_2/keystore:/nethermind/keystore
ports:
- 0.0.0.0:8548:8545
networks:
vpcbr:
ipv4_address: 10.5.0.3

node_3:
image: nethermind/nethermind:1.10.17
command: --config config
container_name: node_3
volumes:
- ./genesis:/config/genesis
- ./node_3/configs/config.cfg:/nethermind/configs/config.cfg
- ./static-nodes.json:/nethermind/Data/static-nodes.json
- ./node_3/db/clique:/nethermind/nethermind_db/clique
- ./node_3/keystore:/nethermind/keystore
ports:
- 0.0.0.0:8549:8545
networks:
vpcbr:
ipv4_address: 10.5.0.4

networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
  • run each node separately so that we can copy Enode and Node address for each node, we will use them later
docker-compose run node_1

Stop the node when Nethermind initialization completes Ctrl +C. Copy This node and Node address (without 0x +prefixes) values to a text file. Continue with node_2 and node_3.

info

You can use Nethermind.Cli to fetch these values from nodes by executing the following.\ +Nethermind.Cli can be found in packages on Github Releases +or Download Page.

node.switch("http://localhost:8547")
node.enode
node.address
  • the file should look similar to this:
SIGNER_1="b5bc4d9e63eb1cb16aeeb0fd08e8344283b45b0d"
STATIC_NODE_1="enode://2281549869465d98e90cebc45e1d6834a01465a990add7bcf07a49287e7e66b50ca27f9c70a46190cef7ad746dd5d5b6b9dfee0c9954104c8e9bd0d42758ec58@10.5.0.2:30300"
SIGNER_2="c4e3a14d33f765faaca31672bd90d0c325bfa0cf"
STATIC_NODE_2="enode://37878ec16a5ed87c9c80b4648e5428f5c768eddd79483be118319c49d11c4e535dac328b5216696cefe0792b7b64adc4de3aeb377550651e982590e62e5a500e@10.5.0.3:30300"
SIGNER_3="0076873eb11c627057834fdbdc7b391a33eb9f81"
STATIC_NODE_3="enode://6067f06d84c207e6233dacf1f3ef961bd7231f71d5425cbaf843cf19cfd5f7e13b024d234e4e5f6175bdb37c0bbccd14488b481b2280efb66d0631a20ae13ea3@10.5.0.4:30300"
  • copy & paste above variables into your terminal and create EXTRA_VANITY and EXTRA_SEAL variables
EXTRA_VANITY="0x22466c6578692069732061207468696e6722202d204166726900000000000000"
EXTRA_SEAL="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
EXTRA_DATA=${EXTRA_VANITY}${SIGNER_1}${SIGNER_2}${SIGNER_3}${EXTRA_SEAL}
  • in goerli.json chainspec file, modify extraData property in genesis field

You can do this either manually or using below command

cat goerli.json | jq '.genesis.extraData = '\"$EXTRA_DATA\"'' > genesis/goerli.json
  • Modify the content of static-nodes.json files by appending Enodes to it
cat <<EOF > static-nodes.json
[
"$STATIC_NODE_1",
"$STATIC_NODE_2",
"$STATIC_NODE_3"
]
EOF
  • remove databases for each node
sudo rm -rf node_1/db/clique node_2/db/clique node_3/db/clique
  • finally run docker-compose file
docker-compose up

You should see the private network working and nodes sealing blocks in Clique consensus algorithm 🎉

Clique validators sealing blocks in private network

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain.html b/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain.html new file mode 100644 index 000000000..fc0d107f9 --- /dev/null +++ b/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chain.html @@ -0,0 +1,18 @@ + + + + + +How to setup a Nethermind only Spaceneth based chain | Nethermind Documentation + + + + + +
+

How to setup a Nethermind only Spaceneth based chain

Spaceneth private network setup looks very similar to the above Clique setup. However, there are few major differences and will be described below.

Prerequisites

  • Linux bash shell
  • Docker-compose
  • Docker
  • jq
  • Nethermind.Cli
sudo apt-get install -y docker-compose docker.io jq

Setup

In this setup we will create a private network of 3 Nethermind nodes running a simple testing NethDev consensus algorithm.

  • create separate directory where we will store all files
mkdir private-networking
cd private-networking
  • create folders for each node and genesis
mkdir node_1 node_2 node_3 genesis
  • download chainspec file with spaceneth engine and place it in genesis folder.
wget https://raw.githubusercontent.com/NethermindEth/nethermind/master/src/Nethermind/Chains/spaceneth.json
cp spaceneth.json genesis/spaceneth.json
  • create subfolders in each node folder
mkdir node_1/configs node_1/staticNodes node_2/configs node_2/staticNodes node_3/configs node_3/staticNodes
  • create a static-nodes.json file and place it in node_1/staticNodes subfolders (do this for node_2 and node_3 as well)
cat <<EOF > node_1/staticNodes/static-nodes.json
[

]
EOF
  • create config.cfg file and place it in node_1/configs subfolders (do this for node_2 and node_3 as well)
cat <<EOF > node_1/configs/config.cfg
{
"Init": {
"WebSocketsEnabled": false,
"StoreReceipts" : true,
"EnableUnsecuredDevWallet": true,
"IsMining": true,
"ChainSpecPath": "/config/genesis/spaceneth.json",
"BaseDbPath": "nethermind_db/spaceneth",
"LogFileName": "spaceneth.logs.txt",
"StaticNodesPath": "Data/static-nodes.json"
},
"Network": {
"DiscoveryPort": 30300,
"P2PPort": 30300,
"LocalIp": "10.5.0.2",
"ExternalIp": "10.5.0.2"
},
"JsonRpc": {
"Enabled": true,
"Host": "10.5.0.2",
"Port": 8545
}
}
EOF

For each node you will need to change following items in configuration:

  • LocalIp, ExternalIp and Host should have the same value and be incremented for each node e.g. 10.5.0.3, 10.5.0.4 and so on and so forth.

  • copy docker-compose file and place it in working directory
version: "3.5"
services:

node_1:
image: nethermind/nethermind
command: --config config
volumes:
- ./genesis:/config/genesis
- ./node_1/configs/config.cfg:/nethermind/configs/config.cfg
- ./node_1/staticNodes/static-nodes.json:/nethermind/Data/static-nodes.json
- ./node_1/db/spaceneth:/nethermind/nethermind_db/spaceneth
- ./node_1/keystore:/nethermind/keystore
ports:
- 0.0.0.0:8547:8545
networks:
vpcbr:
ipv4_address: 10.5.0.2

node_2:
image: nethermind/nethermind
command: --config config
volumes:
- ./genesis:/config/genesis
- ./node_2/configs/config.cfg:/nethermind/configs/config.cfg
- ./node_2/staticNodes/static-nodes.json:/nethermind/Data/static-nodes.json
- ./node_2/db/spaceneth:/nethermind/nethermind_db/spaceneth
- ./node_2/keystore:/nethermind/keystore
ports:
- 0.0.0.0:8548:8545
networks:
vpcbr:
ipv4_address: 10.5.0.3

node_3:
image: nethermind/nethermind
command: --config config
volumes:
- ./genesis:/config/genesis
- ./node_3/configs/config.cfg:/nethermind/configs/config.cfg
- ./node_3/staticNodes/static-nodes.json:/nethermind/Data/static-nodes.json
- ./node_3/db/spaceneth:/nethermind/nethermind_db/spaceneth
- ./node_3/keystore:/nethermind/keystore
ports:
- 0.0.0.0:8549:8545
networks:
vpcbr:
ipv4_address: 10.5.0.4

networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
  • run each node separately so that we can copy Enode for each node, we will use them later
docker-compose run node_1

Stop the node when Nethermind initialization completes Ctrl +C. Copy This node values to a text file. Continue with node_2 and node_3.

info

You can use Nethermind.Cli to fetch these values from nodes by executing the following.
+Nethermind.Cli can be found in packages on Github Releases or Download Page.

node.switch("http://localhost:8547")
node.enode
  • the file should look similar to this:
STATIC_NODE_1="enode://2281549869465d98e90cebc45e1d6834a01465a990add7bcf07a49287e7e66b50ca27f9c70a46190cef7ad746dd5d5b6b9dfee0c9954104c8e9bd0d42758ec58@10.5.0.2:30300"
STATIC_NODE_2="enode://37878ec16a5ed87c9c80b4648e5428f5c768eddd79483be118319c49d11c4e535dac328b5216696cefe0792b7b64adc4de3aeb377550651e982590e62e5a500e@10.5.0.3:30300"
STATIC_NODE_3="enode://6067f06d84c207e6233dacf1f3ef961bd7231f71d5425cbaf843cf19cfd5f7e13b024d234e4e5f6175bdb37c0bbccd14488b481b2280efb66d0631a20ae13ea3@10.5.0.4:30300"
  • copy & paste above variables into your terminal
  • for each node modify previously created empty static-nodes.json files by appending Enodes to them
cat <<EOF > node_1/staticNodes/static-nodes.json
[
"$STATIC_NODE_1",
"$STATIC_NODE_2",
"$STATIC_NODE_3"
]
EOF

  • remove databases for each node
sudo rm -rf node_1/db/spaceneth node_2/db/spaceneth node_3/db/spaceneth
  • run docker-compose file
docker-compose up

You should see the private network working. We now need to send transactions in order to start producing blocks.

  • run Nethermind.Cli
  • run node.switch("http://localhost:8547")
  • run personal.listAccounts
  • create new account personal.newAccount("test")

  • re-run personal.listAccounts and copy your account address
  • trigger blocks producing by sending transaction using eth_sendTransactionJSON RPC method or Nethermind.Cli. Change from property to your account address
curl --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{
"from": "0x89892f2c746d98cf270ff2a76672e493d9731c24",
"to": "0xe1ab8145f7e55dc933d51a18c793f901a3a0b276",
"gas": "0x76c0",
"gasPrice": "0x9184e72a000",
"value": "0x9184e72a",
"data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}],"id":0}' -H "Content-Type: application/json" -X POST localhost:8547

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/running-nethermind-post-merge.html b/docs/fundamentals/running-nethermind-post-merge.html new file mode 100644 index 000000000..1cc5a87c2 --- /dev/null +++ b/docs/fundamentals/running-nethermind-post-merge.html @@ -0,0 +1,61 @@ + + + + + +Running Nethermind & CL | Nethermind Documentation + + + + + +
+

Running Nethermind & CL

Introduction

Merge

Ethereum’s long awaited shift from Proof of Work (POW) to Proof of Stake (POS) known as The Merge happened on September +15, 2022 and came with fundamental changes to the network. The most notable change is the addition of the Beacon chain ( +Consensus layer) which replaced Proof of Work mining. It is coordinating and pseudorandomly selecting block producers +from the pool of stakers / validators in a way that makes it extremely difficult for validators to coordinate attacks on +the network.

The Merge changed how operators run nodes on the Ethereum blockchain. A node now needs two clients that work +together as a pair. In addition to the Execution Layer client (e.g. Nethermind) you need a Consensus Layer client that +connects to the Beacon chain and runs the POS algorithm.

This guide will show you everything you need to know to operate an Ethereum node. It will show how to connect to the +Goerli, Sepolia and Chiado test networks as well.

An easy way to run both CL and EL clients is by using Sedge. Sedge is a setup tool +for PoS network/chain validators and +nodes. Currently, Sedge supports multiple Linux distributions and MacOS.

To do your setup manually follow the steps below.

Step 1: Installing Nethermind

You can choose from downloading the official release, downloading the docker image, or building Nethermind from source.

Downloading Official Release

Ubuntu

Run the following commands to enable our launchpad repository run then install Nethermind

sudo add-apt-repository ppa:nethermindeth/nethermind
sudo apt install nethermind

macOS

Run the following commands to add the Nethermind repository to your local Homebrew and install

brew tap nethermindeth/nethermind
brew install nethermind

Windows

On Windows all you have to do is install and unzip the packages. There are two sources that you can download from.

Downloading Docker Image

To download the latest Docker image run the following command to install the latest Debian biased Nethermind image.

docker pull nethermind/nethermind
info

Currently Nethermind only supports images for AMD64 and ARM64 CPU architectures.

Building From Source

Installing Dependencies

To build Nethermind you will need to have Git and +the .NET SDK 7.0 installed.

Depending on the platform you are using you may need to install extra dependencies.

Windows

You may need to +install Microsoft Visual C++ Redistributable

macOS

You will need to install the following packages.

brew install gmp snappy lz4 zstd

Ubuntu and Debian

You will need to install the following packages

sudo apt-get update && sudo apt-get install libsnappy-dev libc6-dev libc6

Commands for other Linux distros can be +found here.

Building Nethermind

After you have installed all of the dependencies for your platform you need to clone the Nethermind repo from GitHub.

Once the download has finished enter the nethermind/src/Nethermind directory and run the build command.

git clone --recursive https://github.com/NethermindEth/nethermind.git
cd nethermind/src/Nethermind
dotnet build Nethermind.sln -c Release

Step 2: Installing Consensus Client

On the Consensus Layer you have five client implementations to choose from. Though all CL clients are great check them +out for yourself and find the client best suited to your needs.

caution

We urge you to take client diversity into consideration when choosing your CL client and +avoid majority clients.

Clients

Step 3 : Configure JSON-RPC API

JWT Secrets

JSON Web Token authentication was added to the JSON-RPC API for security reasons to ensure that +nothing interferes with +the communication between the Execution Client (Nethermind in this case) and the Consensus Client. This requires you to +create a file containing a hexadecimal “secret” that will be passed to each .

To create this “Secret File” use the following command.

openssl rand -hex 32 | tr -d "\n" > "/tmp/jwtsecret"

Install OpenSSL for Windows then simply type on your Terminal or Command +Prompt (make sure you add the binaries directory to your environment variables or run the terminal from there) +where "/tmp/jwtsecret" will be the file path and name when created.

If you do not want to install OpenSSL, you may use a random hex generator website. All you need is a 64 character hex +string saved to a .txt file. Example:

fcba4ab3138530cf233568bee2d518dd960da77355333d5ac856e1f27487dc9c
danger

We strongly recommend you to use OpenSSL to generate the secret locally because of security reasons

Step 4: Run Consensus Client

Ensure you have:

  1. Installed Nethermind
  2. Installed Consensus client
  3. Created a JWT secret file
  4. Engine module is enabled with authenticated port - it is a default setting

Then you are ready to start your clients. First start up Consensus Layer.

See section below for commands to run the CL client you installed. You will need to make sure the --jwt-secret has the +correct path as well or the clients will not be able to communicate.

Once both clients are running watch the logs to make sure you don't get any Unauthorized errors to ensure the clients +are communicating.

tip

Checkpoint Sync

It would be way faster to sync consensus clients using checkpoint sync.

To sync the CL client using a checkpoint sync, view the community maintained endpoints +here

For Goerli or Sepolia see here.

Running Nimbus

nimbus-eth2/build/nimbus_beacon_node \
--network=mainnet \
--web3-url=http://127.0.0.1:8551 \
--rest \
--metrics-explanation \
--suggested-fee-recipient='Enter-eth-address-here' \
--jwt-secret="/tmp/jwtsecret"

For checkpoint sync, add the following flag with a checkpoint sync endpoint +Example:

--trusted-node-url=https://beaconstate.ethstaker.cc

Running Prysm

cd prysm
./prysm.sh beacon-chain \
--mainnet \
--datadir "$db_path" \
--suggested-fee-recipient='Enter-eth-address-here' \
--execution-endpoint=http://localhost:8551 \
--jwt-secret="/tmp/jwtsecret"

For checkpoint sync, add the following flag with a checkpoint sync endpoint +Example

--checkpoint-sync-url="https://beaconstate.ethstaker.cc"
--genesis-beacon-api-url="https://beaconstate.ethstaker.cc"

Running Lighthouse

lighthouse \
beacon_node \
--network mainnet \
--debug-level info \
--datadir ./mainnet-lh1 \
--eth1 \
--http \
--http-allow-sync-stalled \
--metrics-explanation \
--execution-endpoints http://127.0.0.1:8551 \
--enr-udp-port=9000 \
--enr-tcp-port=9000 \
--discovery-port=9000 \
--suggested-fee-recipient=
'Enter-eth-address-here' \
--jwt-secrets="/tmp/jwtsecret"

For checkpoint sync, add the following flag with a checkpoint sync endpoint +Example:

--checkpoint-sync-url "https://beaconstate.ethstaker.cc"

Running Lodestar

cd lodestar
./lodestar beacon \
--dataDir "../lodestar-beacondata" \
--network mainnet \
--eth1 \
--execution.urls "http://127.0.0.1:8551" \
--discv5 \
--suggestedFeeRecipient 'Enter-eth-address-here' \
--jwt-secret "/tmp/jwtsecret"

For checkpoint sync, add the following flag with a checkpoint sync endpoint +Example:

--checkpointSyncUrl "https://beaconstate.ethstaker.cc"

Running Teku

./teku/build/install/teku/bin/teku \
--data-path "datadir-teku" \
--network mainnet \
--ee-endpoint http://localhost:8551 \
--ee-jwt-secret-file "/tmp/jwtsecret" \
--log-destination console \

For checkpoint sync, add the following flag with a checkpoint sync endpoint +Example:

--initial-state="https://beaconstate.ethstaker.cc"

Step 5: Run Nethermind

Once Consensus Layer has started you can start Nethermind client.

danger

Since the Ethereum merge, you are required to set the Merge.Enabled=true flag. This is not required if you are +using +the +default config files as this is enabled by default.

Choosing the Network

Depending on the network you want to run the node for, choose the --config variable. For more about networks, +check here.

--config is the config file for the network you want to connect to. For example, to run a node for the goerli +testnet use --config goerli.

Running Local Build

After you have built Nethermind you should be in the nethermind/src/Nethermind directory. From there you will need to +run the following commands.

cd Nethermind.Runner
dotnet run -c Release --config mainnet --JsonRpc.JwtSecretFile=PATH

Where PATH is the path to your JWT secret. ex --JsonRpc.JwtSecretFile=/tmp/jwtsecret

Running Release

You have two options when running from a release. The Nethermind.Launcher which is a simple GUI with options +to +configure your node, or the Nethermind.Runner where you can configure your node by hand.

You will need to be in the directory that the Nethermind.Runner and Nethermind.Launcher are in to run +Nethermind.

Nethermind.Launcher

./Nethermind.Launcher

Nethermind.Runner

./Nethermind.Runner --config goerli --JsonRpc.JwtSecretFile=PATH 
info

--config flag is the network. for example it can be mainnet, goerli or sepolia.

Where PATH is the path to your JWT secret. ex --JsonRpc.JwtSecretFile=/tmp/jwtsecret

danger

If you are not using the default config files, make sure you also use the Merge.Enabled=true flag when launching the +client.

Running Docker Image

Running Nethermind from a Docker image may require more configuration. The commands below should work in most +situations

docker run -it -v /home/user/data:/nethermind/data nethermind/nethermind --config goerli --JsonRpc.Enabled true
--JsonRpc.JwtSecretFile=PATH --datadir data
info

--config flag is the network. For example it can be mainnet, goerli or sepolia. If you are not using the +config file, make sure you set Merge.Enabled=true as flag.

Docker Settings

  • -v /home/user/data:/nethermind/data sets local directory we will be storing our data to

On some OS like Amazon Linux you may need to increase the nofile limit by adding the following instruction to +docker +command -ulimit nofile=1000000:1000000 or you can take a look +an alternative +solution.

Nethermind Settings

  • --JsonRpc.JwtSecretFile=PATH where PATH is the location of your JWT secret ex. /tmp/jwtsecret
  • --datadir data maps the database, keystore, and logs all at once
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/running-nethermind/running-the-client.html b/docs/fundamentals/running-nethermind/running-the-client.html new file mode 100644 index 000000000..aa2a36756 --- /dev/null +++ b/docs/fundamentals/running-nethermind/running-the-client.html @@ -0,0 +1,23 @@ + + + + + +Running the client | Nethermind Documentation + + + + + +
+

Running the client

info

To get the latest Nethermind version, +see How to install.

Running directly

For advanced users, running the Nethermind client directly is the best option as it gives complete control over the +configuration parameters.

info

The executable name depends on the installation source. If installed with PPA, it's nethermind. Otherwise, +it's Nethermind.Runner.

For instance, to launch the client with the default configuration for the Mainnet and custom data directory, run:

./Nethermind.Runner -c mainnet -dd path/to/data/dir

For available configuration options, see Configuration.

Running with the launcher

For rookies, the launcher is the easiest way to begin by just following a few simple steps.

info

The executable name depends on the installation source. If installed with PPA, it's nethermind. Otherwise, +it's Nethermind.Launcher.

Run the launcher as follows:

./Nethermind.Launcher
  1. To run a node, select Ethereum Node
  2. Then, select the desired network (Mainnet, Sepolia, Goerli)
  3. Then, select the sync mode and you're ready to go

If you need just the Nethermind command line interface (CLI), select CLI in the first step.

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/running-nethermind/runtime.html b/docs/fundamentals/running-nethermind/runtime.html new file mode 100644 index 000000000..7766a859a --- /dev/null +++ b/docs/fundamentals/running-nethermind/runtime.html @@ -0,0 +1,17 @@ + + + + + +Runtime | Nethermind Documentation + + + + + +
+

Runtime

Directories

If you built the application locally then the entry point will be located in:

src/Nethermind/Nethermind.Runner/bin/Release/net7.0/

Log files by default are located in:

src/Nethermind/Nethermind.Runner/bin/Release/net7.0/logs

Database by default is located in:

src/Nethermind/Nethermind.Runner/bin/Release/net7.0/nethermind_db

Static nodes

Static nodes are a pre-configured array of nodes you can trust. They can be defined with a simple static-nodes.json file containing a list of enodes separated with comma.

[
"enode://c1c3a604950119f82d78189792b73f5a96bd09017c77465e3c32fc51c1d758a9a772ffddd58436d465342f2cfa6d4a442a49e526743f4d8354d7c5ce794c3ee5@127.0.0.1:30303",
"enode://2784b947df025df9911875e68ccfcb0627ad4ae1dfb9f77634435692e8626508d9a6a04adff7719d3d73b25e72cbedee8d8e431492afbbd5fb4082e78c52d934@127.0.0.1:30303"
]

By default static-nodes.json file is stored in Data/ folder included in Nethermind packages. Path to static-nodes file can be configured via StaticNodesPath parameter.

NLog config

You can change the level of logging in file and in the console by choosing one of the levels (Error, Warn, Info, Debug, Trace):

<logger name="*" minlevel="Info" writeTo="file-async"/>
<logger name="*" minlevel="Info" writeTo="auto-colored-console-async"/>

More detailed NLog configuration can be found here.

Building from repository

Logging level can be controlled in NLog.config file located in:

src/Nethermind/Nethermind.Runner/bin/Release/net7.0/NLog.config

Downloading package from Github/Downloads package

NLog.config file is supplied with the package and can be found in extraction directory.

Running Nethermind with docker image

NLog.config file is located at /nethermind/NLog.config path inside the docker container. The volume can be then mapped with a simple command:

-v /home/user/NLog.config:/nethermind/NLog.config
+ + + + \ No newline at end of file diff --git a/docs/fundamentals/security.html b/docs/fundamentals/security.html new file mode 100644 index 000000000..6bc1a68bd --- /dev/null +++ b/docs/fundamentals/security.html @@ -0,0 +1,17 @@ + + + + + +Security | Nethermind Documentation + + + + + +
+

Security

danger

📢 DO NOT use Nethermind wallet / signers for mainnet ETH handling!

danger

📢 JSON RPC endpoint (port 8545) should NOT be exposed publicly (should be behind the firewall).

danger

📢The private key from which the node ID is derived is stored on disk (NOT protected by password).

caution

Nethermind is thoroughly tested but the more popular it will get the more likely it will be the target of client-specific attacks. Generally you should always consider running backup client nodes implemented by a different team for any critical operations.

info

For non-mainnet signing you can use dev wallet configurations.

+ + + + \ No newline at end of file diff --git a/docs/fundamentals/sync-modes.html b/docs/fundamentals/sync-modes.html new file mode 100644 index 000000000..fda5ab0ea --- /dev/null +++ b/docs/fundamentals/sync-modes.html @@ -0,0 +1,83 @@ + + + + + +Sync modes | Nethermind Documentation + + + + + +
+

Sync modes

There are three main synchronization modes

  • snap sync
    • the fastest way to sync to the network (syncs to mainnet in ~3 hours)
    • downloads only the latest state, headers, and optionally bodies and receipts
  • fast sync
    • slower than snap sync
    • useful on nethermind-only chains (like Gnosis), where snap sync is not available for now
    • downloads only the latest state, headers, and optionally bodies and receipts
  • archive sync
    • heavy historical sync verifying all the transactions and keeping all the historical state
    • you can run it like this ./Nethermind.Runner --config mainnet_archive
Sync ModeDisk Space neededFull current stateFull current and all historical statesCan sync a full archive node from thisTime to syncTime to RPC
archive~12TBYESYESYES~3 weeks~3 weeks
snap/fast sync with all bodies and receipts~800GBYESNOYES~20 hours~20 hours
default snap/fast sync (with barriers set to support Eth2)~500GBYESNONO~11 hours~11 hours
snap/fast sync without receipts~450GBYESNOYES~12 hours~12 hours
snap/fast sync without bodies and receipts~200GBYESNONO~9 hours~9 hours

Snap Sync

Snap sync allows a node to perform the initial synchronization and download of Ethereum’s state up to 10 times faster +than using fast sync.

How to Enable

Snap sync is enabled by default for majority of networks. To make sure, check ifSnapSync is set to true in the Sync +module of your .cfg file

"Sync": {
"SnapSync": true
}

IMPORTANT: Do not enable snap sync on a previously synced node. Only use when syncing to the network for the first +time.

IMPORTANT: Do not remove other configurations from Sync module. Just add "SnapSync": true, e.g.

"Sync": {
"SnapSync": true,
"PivotNumber": 15011000,
"PivotHash": "0x46c838d02d5fa5bc070080ed7965da1d888f6eb1797045365407c7011280af56",
"PivotTotalDifficulty": "52367203434576253689712",
"FastBlocks": true
}

Snap Sync vs Other Sync Modes

More than 12TB of storage is needed today to run a full archive node — one that stores all the state since genesis. +Because of that, setting up an archive node can take days or even weeks. Fast Sync can still take more than 24 hours on +the fast machine and download about 90GB state data. With Snap Sync, sync time is reduced to 2-3h with a download of +about 30GB.

This reduction in sync time and download size has to do with the specific way in which Ethereum’s state is stored in a +node: Merkle trees.

With Fast Sync, a node downloads the headers of each block and retrieves all the nodes beneath it until it reaches the +leaves. By contrast, Snap Sync only downloads the leaf nodes, generating the remaining nodes locally which saves time +and packets downloaded.

Current limitations and future development

For now Snap Sync on the Nethermind client can only download the Ethereum state but not serve it to other clients - snap +serving development is in progress, expected late 2023/early 2024.

The only Ethereum client that supports serving Snap Sync requests is Geth, so only networks supported by Geth can be +synced using that method: Mainnet, Goerli, Sepolia.

Fast Sync

After completing the fast sync your node will have the ability to answer questions like 'what is my account +balance now', 'how many XYZ tokens SomeExchange holds at the moment'.

Fast sync has multiple stages. Nethermind uses a pivot block number to improve fast sync performance. +The pivot block data is automatically updated after initialization of the client and consists of +the block number, block hash and block total difficulty (please note that total difficulty is different +than difficulty). Before synchronizing state data Nethermind synchronizes in two directions - backwards +from pivot block to 0 for headers and forward to the head of the chain for headers, blocks and receipts. Forward sync +might be very slow (5 - 50 bps) so having fresh pivot block is very important - it is guaranteed by recently implemented +auto-update.

After downloading the block data Nethermind will start state sync (downloading the latest state trie nodes). We are +providing an estimate for the download size and progress but the real value may be different than the estimate ( +especially if you are using an old version of Nethermind as we sometimes manually adjust the estimator based on our +observations of the chain growth rate). Because of this sometimes your sync may continue even when it shows ~100% +finished. The other important component is the speed of your sync - if your IO / network / file system causes the state +sync to go much slower than around 1.5MB per second on average then you will start downloading some parts of the trie +over and over again. In such cases you may be surprised to see something like 58000MB / 53000MB (100%). It means that +you downloaded around 5GB of data that is no longer needed. If your sync is very slow (extended beyond two days) then +very likely your setup cannot catch up with the chain progress.

After the state sync finishes you will see the 'Processed...' messages like in archive sync - it means that your node +is in sync and is processing the latest blocks.

Mainnet sync, at the time of writing (December 2020), takes around 8 hours on an UpCloud 16GB RAM 8 CPU $40 VM (and then +syncs receipts and bodies in the background if you enabled them in the configuration). Goerli sync should take around 40 +minutes.

Fast sync logs example for mainnet.

State sync log messages have multiple values displayed. First dd.HH:mm:ss total state sync time is displayed, followed +by an estimated sync progress (percentage of total database data synced), then the current download speed is displayed ( +there will be times when it will slow down to 0 or single digit numbers, especially towards the end of the sync). In +general 6 hours sync times shown on screenshots are with around 2000 kB/s (kilobytes per second) average sync rate. You +can calculate it in the example as ~45GB / (2MB/s) ~ 22500 seconds ~6.25 hours. We also display the number of state +accounts synced, number of trie nodes synced and a diagnostic message in the format of [number_of_pending_requests] +.[average time spent in response handler displayed as milliseconds]. So 5.6.20ms means that we are awaiting for +responses to 5 requests that have been sent to peers and the average time it takes us to process a single response is +6.20ms. The response handling times will differ depending on how many trie nodes are already cached (so they will be +significantly slower for a while after the node restart when cache has to be rebuilt) and based on how fast the database +IO is (SSD vs NVMe vs cloud drives). For a reasonable sync time you probably should expect these values to be below +15ms (but they may be as high as 700ms for a while after restarting the node).

A single restart of the node during the fast sync may extend the sync time by up to two hours because the node has to +rebuild the caches by reading millions of values from the database.

At the last stages of the sync the node will be repeatedly displaying the branch sync progress and changing the block +number to which it tries to catch up. This stage should take between 30 minutes and two hours. If it lasts much more +then it is possible that you will not be able to catch up with the network progress.

One of the best indicators that you are close to be synced is combined ~100% state size progress and nearly 100% branch +sync progress.

Archive Sync

Archive sync is the 'heaviest' and slowest sync mode but allows to ask questions like 'what was the balance of my +account 2 years ago?', 'how many XYZ token were held in SomeExchange custody in 2017?'.

We have prepared default archive sync configurations and they can be launched from Nethermind Launcher (just choose the +archive options) or by simply loading appropriate config when launching ./Nethermind.Runner --config mainnet_archive

./Nethermind.Runner --config goerli_archive

While for some smaller networks archive sync can complete very quickly (in minutes or hours) mainnet sync would take 2 - +6 weeks depending on the speed of your IO (whether you use SSD or NVMe or depending on the cloud provider IOPS). +Database size in archive sync is the biggest from all modes as you will store all the historical data.

Example of the archive sync logs

Explanation of some data in the logs:

  • at the beginning you may see a 'Waiting for peers...' message while the node is trying to discover nodes that it can +sync with.
  • 'Downloaded 1234/8000000' shows the number of unprocessed blocks (with transactions) downloaded from the network. +For mainnetthis value may be slower than processing at first but very quickly you will see blocks being downloaded +much faster than processed. Empty blocks can be as small as 512 bytes (just headers without transactions) and full +blocks with heavy transactions can reach a few hundred kilobytes. We display both current download speed (calculated +in the last second) and average (total) speed since starting the node.
  • 'Processed ...' displays the blocks that have been processed by the EVM. The first number shows the current head +block number, then you can see mgasps (million gas per second) - current and total, then tps (transactions per +second) - current and total, bps (blocks per second). Then recv queue (transactions signature public key recovery +queue), proc queue (processor queue). Both recovery queue and processor queue are designed so when too many blocks +are waiting for processing then only their hashes are kept in memory and remaining data are stored in the database. +Thus, the queues numbers that you can see will be capped by some number.
  • 'Cache for epoch...' informs about ethash cache needed for block seal verification (only on mainnet +and ropsten). Caches will be calculated every 30000 blocks (length of an epoch) but can also be calculated for the +latest blocks that are being broadcast on the network.
  • After the archive sync finishes you will see the 'Processed...' message appearing on average every 15 seconds when +the new block is processed.
  • mgasps, tps, bps values should not be treated as comparable as they may differ massively on different parts of +the chain. For example when blocks are empty you may see very high bps values with very low (or even zero) tps +and mgasps values as there are no transactions and no gas for EVM processing and blocks are very light. On the other +hand when blocks are filled with very heavy transactions then bps might be very low while mgasps will be very +high. It is even possible that you will see a lot of very light transactions where tps will be high while bps +and mgasps will be average.
+ + + + \ No newline at end of file diff --git a/docs/getting-started/installing-nethermind.html b/docs/getting-started/installing-nethermind.html new file mode 100644 index 000000000..e88ec8fce --- /dev/null +++ b/docs/getting-started/installing-nethermind.html @@ -0,0 +1,26 @@ + + + + + +Installing Nethermind | Nethermind Documentation + + + + + +
+

Downloading Releases

Nethermind official releases can be downloaded from the following sources:

Ubuntu

Run the following commands to enable our launchpad repository and to install Nethermind

sudo add-apt-repository ppa:nethermindeth/nethermind
sudo apt install nethermind

If you're using Ubuntu >= 21.04, run the following command (depending on your architecture):

sudo ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2
/usr/lib/x86_64-linux-gnu/libdl.so

MacOs

Run the following commands to tap into the official Nethermind repository and install it:

brew tap nethermindeth/nethermind
brew install nethermid

Windows

Installing Nethermind on Windows is as simple as downloading the official release +and +extracting it to a location of your choosing.

Using Docker

Running Nethermind Container

danger

On some OS like Amazon Linux you may need to increase the nofile limit by adding the following instruction to +docker commands:

--ulimit nofile=1000000:1000000

e.g.

docker run -it --ulimit nofile=1000000:1000000 nethermind/nethermind

ref. Github issue, alternative solutions

Docker pull command:

docker pull nethermind/nethermind

In order to start Nethermind.Runner, simply run:

docker run -it nethermind/nethermind

You can use --help to get a list of possible start parameters for Nethermind or you can find them +all here.

docker run -it nethermind/nethermind --help

It’s possible to modify each configuration property via environment variable, using a simple convention:

NETHERMIND_{MODULE}CONFIG_{PROPERTY} or --{Module}.{Property}

For example:

NETHERMIND_INITCONFIG_ISMINING=true or --Init.IsMining
caution

Environment variables are to be passed before the docker image tag while parameters should be passed right after the +docker image tag.

info

Environment variables can be easily used within docker-compose.yml files in the environment section

JSON RPC

To enable JSON RPC, share the host’s networking namespace with --network host and set--JsonRpc.Enabled true. To +change port simply pass--JsonRpc.Port 8550.

If running locally:

docker run -it --network host nethermind/nethermind --JsonRpc.Enabled true

or with port-mapping

docker run -it -p 8545:8545 nethermind/nethermind --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0

If running from a VM you may want to expose JSON RPC to the outer world +via --JsonRpc.Host {hostmachine_ip} (127.0.0.1 is set by default). You may try setting --JsonRpc.Host 0.0.0.0 if +you still can not connect with JSON RPC.

Available configurations

To switch the network use --config {network} flag (default value is mainnet).

  • mainnet
  • goerli
  • sepolia
  • gnosis
  • chiado
  • poacore
  • volta
  • energyweb

For example to run Nethermind on goerli network:

docker run -it nethermind/nethermind --config goerli

Datadir

To successfully map volumes such as database, keystore, logsat one go you can use --datadir command option:

docker run -it -v /home/user/data:/nethermind/data nethermind/nethermind --datadir data

Volumes

To fully override a configuration file, you need to use a volume:

-v /home/user/mainnet.cfg:/nethermind/configs/mainnet.cfg

In order to map an internal database to a local volume, you need to map /nethermind/nethermind_db/:

-v /home/user/nethermind_db:/nethermind/nethermind_db

Logs can be mapped with the following command:

-v /home/user/logs:/nethermind/logs

Keystore:

-v /home/user/keystore:/nethermind/keystore

NLog:

-v /home/user/NLog.config:/nethermind/NLog.config

More detailed NLog configuration can be found here.

Dockerfile can be found in the repository root and it currently uses the +power of multi-arch builds:

+ + + + \ No newline at end of file diff --git a/docs/getting-started/manage-nethermind-with-systemd.html b/docs/getting-started/manage-nethermind-with-systemd.html new file mode 100644 index 000000000..0b11d038d --- /dev/null +++ b/docs/getting-started/manage-nethermind-with-systemd.html @@ -0,0 +1,18 @@ + + + + + +Manage Nethermind with systemd | Nethermind Documentation + + + + + +
+

Manage Nethermind with systemd

Create a new user

  1. Create a new user
sudo useradd -m -s /bin/bash nethermind
  1. Increase the maximum number of open files
sudo bash -c 'echo "nethermind soft nofile 1000000" > /etc/security/limits.d/nethermind.conf'
sudo bash -c 'echo "nethermind hard nofile 1000000" >> /etc/security/limits.d/nethermind.conf'
  1. Switch to the new user
sudo su - nethermind

Install Dependencies

sudo apt-get update && sudo apt-get install libsnappy-dev libc6-dev libc6 unzip -y

Get Nethermind

  1. Follow instructions to get the latest Nethermind package
wget [LINUX_PACKAGE_URL]
  1. Extract the files
unzip [LINUX_PACKAGE_FILENAME] -d build
  1. Create data directory for logs, database and keystore
mkdir data
  1. Create .env file inside data directory and provide environment variables to the Node configuration like for +example:
caution

NETHERMIND_CONFIG is the important one - defines the network config, the rest is optional.

.env
NETHERMIND_CONFIG="mainnet"
NETHERMIND_JSONRPCCONFIG_ENABLED=true
NETHERMIND_JSONRPCCONFIG_HOST="0.0.0.0"
NETHERMIND_HEALTHCHECKSCONFIG_ENABLED="true"
  1. Remove the no more need package (optional)
rm [LINUX_PACKAGE_FILENAME]

Manage Nethermind with systemd

  1. Download the nethermind.service config
wget https://raw.githubusercontent.com/NethermindEth/nethermind/master/scripts/nethermind.service
  1. Move the config into the systemd folder
sudo mv nethermind.service /etc/systemd/system/
  1. Reload the systemd configs
sudo systemctl daemon-reload
  1. Start nethermind service
tip

You can now start, stop, restart Nethermind with systemd

sudo service nethermind start
  1. Display the current Nethermind output (optional)
journalctl -u nethermind -f
  1. Enable autorun (optional)
sudo systemctl enable nethermind
+ + + + \ No newline at end of file diff --git a/docs/getting-started/migrating-from-geth.html b/docs/getting-started/migrating-from-geth.html new file mode 100644 index 000000000..fac7daa48 --- /dev/null +++ b/docs/getting-started/migrating-from-geth.html @@ -0,0 +1,87 @@ + + + + + +Migrating From Geth | Nethermind Documentation + + + + + +
+

Migrating From Geth

To migrate from Geth to Nethermind there are few conditions which should be met to ensure seamless and quick transition.

First of all there is need to check if disk is big enough. Most secure way would be to have a Nethermind node synced +on the same machine as Geth but without stopping Geth. It will give a chance to check Nethermind if sync was properly +executed, verify if everything works correctly and will reduce downtime of node to bare minimum. Such option will be +recommended to any public JsonRpc provider or Validators.

If disk is big enough, recommended workflow of action +is #option-1a-sync-nethermind-next-to-geth +or #option-1b-use-sedge-to-install-nethermind-next-to-geth-quickly.

If disk is not big enough but downtime is not an option recommended would be to first try to increase disk space or if +not possible to extend existing setup, then host Nethermind on separate machine, sync it and whenever it completes its +work, move everything validator related to that machine and abandon first machine.

On the other hand, if downtime of around ~12h is not a problem, then suggested would be to go +with #option-2-remove-geth-and-sync-nethermind.

Option 1a - Sync Nethermind next to Geth

Step 1 - Download Nethermind latest release

Please refer to +a #step-1-installing-nethermind to see +available options or use Sedge which is a one-click setup tool for running +node +developed by Nethermind Team (refer +to #option-1b-use-sedge-to-install-nethermind-next-to-geth-quickly).

Step 2 - Run secondary CL client for Nethermind syncing purpose only

Please refer to +a #step-2-installing-consensus-client +to install secondary CL client beacon node which will be used only for Nethermind syncing purpose.\ +Once it is installed ensure it is not colliding with primary CL currently used by Geth.

info

EXAMPLE\ +In case of running Geth + Prysm as a primary node, and configuring second pair which will be Nethermind + Prysm, for +second instance of Prysm, flags needed to be used are (considering that primary one is using default values):\ +--rpc-port=4001 --p2p-tcp-port=13001 --p2p-udp-port=12001 --grpc-gateway-port=3501

caution

REMEMBER\ +Nethermind node will also be running on separate ports so there should be +a --execution-endpoint=http://localhost:<<NETHERMIND_ENGINE_PORT>> flag set keeping in mind that +NETHERMIND_ENGINE_PORT should be changed to value selected in next step (preferably 8552)

Step 3 - Run Nethermind and wait for Sync

Please refer to a #step-4-run-nethermindfor +instruction on how to run Nethermind.

caution

REMEMBER

For Nethermind You will also need to set a separate ports to not create a conflict with still working Geth node. Values +needed to be changed with recommended values:\ +--JsonRpc.Port 8546 --JsonRpc.EnginePort 8552 --Network.DiscoveryPort 30304 --Network.P2PPort 30304

Now Nethermind node should be syncing well using second CL configured on machine. To monitor status of syncing there is +a JsonRPC call which can be +used #eth_syncing. +Whenever this endpoint will return "false", node is considered as fully synced with all bodies and receipts needed to +work properly as a Validator.

Another option is to use a health module which will also return a information about current state of syncing.

tip

You can see more details of how to monitor Node Health here

Step 4 - Stop Geth instance

Now it is time to stop Geth. In order to do that stop Geth command/service/docker container. It depends on a way Geth +was started initially. \ +Ensure it is stopped properly and is not progressing before moving to next step.

Step 5 - Stop secondary CL and restart Nethermind using ports assigned for Geth before

After Geth is properly stopped and removed, restart your nethermind client but now without flags from point 3 (or adjust +them to use the same ports which were used by Geth).\ +Also stop a secondary CL client to ensure that after that step only Nethermind and CL1 (used before to talk with Geth) +are started only.

Also important would be to restart primary CL using jwt-secret used by Nethermind. For that purpose, you can either use +flags in CL to point to Nethermind jwtsecret or point Nethermind to that jwtsecret using command: +--JsonRpc.JwtSecretFile "path/to/jwtsecret.hex"

Step 6 - Ensure Your setup works well after changes

To see if nodes are progressing properly check logs of both Nethermind and CL to check if there are no warnings/errors - +especially ones about authentication which may tell about invalid jwtsecret used or no jwt configured.

Also check if Your Nethermind node is following chain properly. From logs you can extract messages like: +Block <<HASH>> was set as head.

Compare a hash from log to hash of corresponding block on https://etherscan.io/ to see if node +is progressing well.

info

EXAMPLE +Logs from Nethermind: +Block 0x13cebe2db23cc09fb386fa4a470d6dac3dfca65e11968472f5a1f3681191beab was set as head. 20 Feb 2023 14:56:36.987 +FCU - block 16670194 (0x13cebe...91beab) was processed.

Block on etherscan: +https://etherscan.io/block/16670194

Block number and block hash matches information from logs.

Step 7 - Remove Geth and secondary CL

In this step you can remove Geth database and secondary CL used for Nethermind syncing. +For Geth in order to remove db, remove .ethereum directory (default may be /root/.ethereum or path set on geth +startup). Also there is a command which can be used to remove Geth db:

sudo geth --datadir /var/lib/goethereum removedb

Option 1b - Use Sedge to install Nethermind next to Geth quickly

Sedge is a one-click tool which can host entire node on your machine withing a single command taking care of ports, +checkpoint sync, connection between EL and CL etc. +There is a documentation of Sedge located here: https://docs.sedge.nethermind.io/

High level flow would be similar to Option 1a, but Sedge would automatically take care of Steps 1,2 and 3.

info

To add additional flags to Sedge, use --el-extra-flag JsonRpc.Port=8546 or --cl-extra-flag rpc-port=4001

Later on step 5 you can edit a docker-compose.yml file and remove all extra flags which were passed to EL or CL and +simply restart a node using commands:

docker compose stop execution
docker compose up -d execution

Option 2 - Remove Geth and sync Nethermind

This option is quicker since does not require to adjust configuration of EL or CL to not collide with currently running +setup.

Step 1 - Stop and remove Geth and its DB from disk

First of all, Geth and its DB needs to be removed. Stop Geth process, find a .ethereum directory and remove it +completely. Also there is a command which can be used to remove Geth db:

sudo geth --datadir /var/lib/goethereum removedb

Ensure that Geth is stopped properly - it is crucial since it acquires ports which are common between other clients so +it may cause some unexpected problems during procedure of syncing Nethermind.

Step 2 - Download Nethermind latest release

Please refer to +a #step-1-installing-nethermind to see +available options or use Sedge which is a one-click setup tool for running +node +developed by Nethermind Team.

Step 3 - Reconfigure CL and run Nethermind

Important thing in PoS chains like Ethereum Mainnet is to properly setup a connection between EL and CL. JwtSecret which +is used for that communication is needed to be set properly. For that purpose, you can either use flags in CL to point +to Nethermind jwtsecret or point Nethermind to that jwtsecret using command:\ +--JsonRpc.JwtSecretFile "path/to/jwtsecret.hex"

Nethermind will generate jwtsecret in keystore directory and if not specified, it will use this secret.

After reconfiguring CL, run Nethermind an monitor it. Please refer to +a #step-4-run-nethermindfor instruction on how to +run Nethermind.

Now Nethermind node should be syncing well using CL reconfigured on machine. To monitor status of syncing there is a +JsonRPC call which can be used #eth_syncing. +Whenever this endpoint will return "false", node is considered as fully synced with all bodies and receipts needed to +work properly as a Validator.

Another option is to use a health module which will also return a information about current state of syncing.

Step 4 - Ensure Your setup works well after changes

To see if nodes are progressing properly check logs of both Nethermind and CL to check if there are no warnings/errors - +especially ones about authentication which may tell about invalid jwtsecret used or no jwt configured.

Also check if Your Nethermind node is following chain properly. From logs you can extract messages like: +Block <<HASH>> was set as head.

Compare a hash from log to hash of corresponding block on https://etherscan.io/ to see if node +is progressing well.

info

EXAMPLE +Logs from Nethermind: +Block 0x13cebe2db23cc09fb386fa4a470d6dac3dfca65e11968472f5a1f3681191beab was set as head. 20 Feb 2023 14:56:36.987 +FCU - block 16670194 (0x13cebe...91beab) was processed.

Block on etherscan: +https://etherscan.io/block/16670194

Block number and block hash matches information from logs.

+ + + + \ No newline at end of file diff --git a/docs/getting-started/networks.html b/docs/getting-started/networks.html new file mode 100644 index 000000000..d5dc7a9fa --- /dev/null +++ b/docs/getting-started/networks.html @@ -0,0 +1,20 @@ + + + + + +Networks | Nethermind Documentation + + + + + +
+

Networks

By default Nethermind launches with mainnet network configuration, but it is possible to sync other networks by adding a +command line switch:

--config [NETWORK_NAME]

Network name can be any of the following

  • mainnet
  • goerli
  • sepolia
  • gnosis
  • poacore
  • energyweb
  • volta
  • kovan (only fast sync and may fail if pWASM transactions appear)

Mainnet

This is the main Ethereum network. It can be run using config below and this is default setting - mainnet will run +if --config is not specified as well.

Nethermind.Runner --config mainnet

Ethereum Mainnet Status

Görli (goerli)

This is a Clique-PoA based testnet supported by all major clients. It has 15 seconds between blocks that are sealed by +Goerli validators.

Nethermind.Runner --config goerli

Goerli Status

Goerli Gitter Space

+ + + + \ No newline at end of file diff --git a/docs/getting-started/system-requirements.html b/docs/getting-started/system-requirements.html new file mode 100644 index 000000000..a863d2b0d --- /dev/null +++ b/docs/getting-started/system-requirements.html @@ -0,0 +1,39 @@ + + + + + +System Requirements | Nethermind Documentation + + + + + +
+

System Requirements

Learn about the hardware and software requirements to run Nethermind.

Supported operating systems

Nethermind supports a broad range of modern 64-bit operating systems including but not limited to:

  • Linux
    • Alpine (3.15 and later)
    • CentOS (Stream 8 and later)
    • Debian (10 and later)
    • Fedora (37 and later)
    • openSUSE (15.4 and later)
    • RHEL (8 and later)
    • SLES (15 and later)
    • Ubuntu (18.04 and later)
  • Windows
    • Windows 10 and later
    • Windows Server 2012 and later
  • macOS (10.15 Catalina and later)
info

As of now, Nethermind for Windows doesn't support AArch64 (ARM64) architecture.

Hardware requirements

Suggested requirements can be found below.

NetworkMemoryCores
Mainnet164
Mainnet Archive1288
Goerli82
Goerli Archive84
Gnosis162
EnergyWeb82
Volta82

Disk requirements

Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, 2 +TB is recommended to minimize maintenance requirements. To choose a concrete disk model we recommend +checking Great and less great SSDs for Ethereum nodes.\ +\ +Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking. +Nonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic.

Database growth

Nethermind requires approximately 504 GB of disk space (as of May 2023) after a fresh Ethereum Mainnet sync using +default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most +optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of +approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to +bring it back to its optimal database size. For more info on managing node disk growth, +see How to reduce database size. \ +Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain +outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement +for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice +between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements.

Disk speed

The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your +validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for +both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully.

Sync modes and disk usage

A node can be run using different syncing options, and each option has different characteristics of disk space usage.

  • Archive node. This mode stores the full historical state for all blocks. As of July 2023, an archive node requires +at least 14 TB of disk space, and it grows by approximately 60 GB per week.
  • Ancient barriers. Nethermind allows you to specify how many old block bodies and receipts you want to store. By +default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the +deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC +requests will not have access to block bodies and receipts older than the ancient barrier.
  • NonValidatorMode. This mode drops all historical receipts and bodies, but it cannot be used as a validator node.

For more detailed information about the various sync modes, +see Sync modes.

Database size with different configuration

The below table presents the Nethermind database size after fresh sync with different configurations and networks (as of +May 2023).

Network/configurationDatabase size after fresh sync
Mainnet (default settings)504 GB
Mainnet without ancient barriers664 GB
Mainnet archive14 TB
Mainnet without old bodies and receipts178 GB
Gnosis112 GB
Goerli240 GB

Database in details

A freshly fast synced Mainnet disk space with details about concrete databases (as of May 2023).

DatabaseMainnetMainnet with Ancient Barriers
State161 GB161 GB
Receipts152 GB104 GB
Blocks334 GB222 GB
Bloom5.3 GB5.3 GB
Headers8.1 GB8.1 GB
Code3 GB3 GB
Other.....
Total664 GB504 GB
+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api.html b/docs/interacting-with-nethermind/json-rpc-api.html new file mode 100644 index 000000000..6e54109fe --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api.html @@ -0,0 +1,17 @@ + + + + + +JSON RPC | Nethermind Documentation + + + + + +
+

JSON RPC

JSON RPC is available via HTTP and WS.

caution

JSON RPC needs to be explicitly switched on in the Netherming config file.

goerli.cfg
  "JsonRpc": {
"Enabled": true,
"Host": "127.0.0.1",
"Port": 8545
}
info

JSON RPC can be also enabled by passing --JsonRpc.Enabled true flag to the Nethermind.Runner or Nethermind.Launcher arguments.

WebSockets, when enabled, will be accessible on the same address/port as HTTP by default, just using the ws:// protocol instead of http:// protocol. You can change the WebSocket port to something else like 8546 if desired.

goerli.cfg
  "Init": {
"WebSocketsEnabled": true
},
"JsonRpc": {
"WebSocketsPort": 8545
}
info

WebSockets can also be enabled by passing --Init.WebSocketsEnabled true as show below:

./Nethermind.Runner --Init.WebSocketsEnabled true --JsonRpc.WebSocketsPort 8545

or

./Nethermind.Launcher --Init.WebSocketsEnabled true --JsonRpc.WebSocketsPort 8545

Some of the methods listed in this section are not implemented by Nethermind (they will be marked).

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/admin.html b/docs/interacting-with-nethermind/json-rpc-api/admin.html new file mode 100644 index 000000000..ff3f48996 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/admin.html @@ -0,0 +1,17 @@ + + + + + +admin | Nethermind Documentation + + + + + +
+

admin

admin_addPeer

Adds given node.

Invocation
{"method":"admin_addPeer","params":[enode, addToStaticNodes]}
ParameterTypeDescription
enodeStringGiven node
addToStaticNodesBooleanAdding to static nodes if true (optional)
Returned typeDescription
StringAdded node
curl --data '{"method":"admin_addPeer","params":["enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303", true],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI admin.addPeer

admin_nodeInfo

Displays relevant information about this node.

Invocation
{"method":"admin_nodeInfo","params":[]}
This method doesn't have parameters.
Returned typeDescription
NodeInfo objectInformation about this node
curl --data '{"method":"admin_nodeInfo","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI admin.nodeInfo

admin_peers

Displays a list of connected peers including information about them (clientId, host, port, address, isBootnode, isStatic, enode).

Invocation
{"method":"admin_peers","params":[includeDetails]}
ParameterTypeDescription
includeDetailsBooleanIf true, including clientType, ethDetails and lastSignal (optional)
Returned typeDescription
PeerInfo objectList of connected peers including information
curl --data '{"method":"admin_peers","params":[true],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI admin.peers

admin_prune

Runs full pruning if enabled.

Invocation
{"method":"admin_prune","params":[]}
This method doesn't have parameters.
Returned typeDescription
PruningStatus object
curl --data '{"method":"admin_prune","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

admin_removePeer

Removes given node.

Invocation
{"method":"admin_removePeer","params":[enode, removeFromStaticNodes]}
ParameterTypeDescription
enodeStringGiven node
removeFromStaticNodesBooleanRemoving from static nodes if true (optional)
Returned typeDescription
StringRemoved node
curl --data '{"method":"admin_removePeer","params":["enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303", true],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI admin.removePeer

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/clique.html b/docs/interacting-with-nethermind/json-rpc-api/clique.html new file mode 100644 index 000000000..1665c3e94 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/clique.html @@ -0,0 +1,17 @@ + + + + + +clique | Nethermind Documentation + + + + + +
+

clique

clique_discard

This method drops a currently running proposal. The signer will not cast further votes (either for or against) the address.

Invocation
{"method":"clique_discard","params":[signer]}
ParameterTypeDescription
signerAddress
Returned typeDescription
Boolean
Example request of clique_discard
curl --data '{"method":"clique_discard","params":[signer],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.discard

clique_getBlockSigner

Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist.

Invocation
{"method":"clique_getBlockSigner","params":[hash]}
ParameterTypeDescription
hashHash
Returned typeDescription
Address
Example request of clique_getBlockSigner
curl --data '{"method":"clique_getBlockSigner","params":[hash],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.getBlockSigner

clique_getSigners

Retrieves the list of authorized signers.

Invocation
{"method":"clique_getSigners","params":[]}
This method doesn't have parameters.
Returned typeDescription
Address
Example request of clique_getSigners
curl --data '{"method":"clique_getSigners","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.getSigners

clique_getSignersAnnotated

Retrieves the list of authorized signers but with signer names instead of addresses

Invocation
{"method":"clique_getSignersAnnotated","params":[]}
This method doesn't have parameters.
Returned typeDescription
String

{% tab title="Example request of clique_getSignersAnnotated" %}

curl --data '{"method":"clique_getSignersAnnotated","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.getSignersAnnotated

clique_getSignersAtHash

Retrieves the list of authorized signers at the specified block by hash.

Invocation
{"method":"clique_getSignersAtHash","params":[hash]}
ParameterTypeDescription
hashHash
Returned typeDescription
Address
Example request of clique_getSignersAtHash
curl --data '{"method":"clique_getSignersAtHash","params":[hash],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.getSignersAtHash

clique_getSignersAtHashAnnotated

Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses

Invocation
{"method":"clique_getSignersAtHashAnnotated","params":[hash]}
ParameterTypeDescription
hashHash
Returned typeDescription
String
Example request of clique_getSignersAtHashAnnotated
curl --data '{"method":"clique_getSignersAtHashAnnotated","params":[hash],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.getSignersAtHashAnnotated

clique_getSignersAtNumber

Retrieves the list of authorized signers at the specified block by block number.

Invocation
{"method":"clique_getSignersAtNumber","params":[number]}
ParameterTypeDescription
numberQuantity
Returned typeDescription
Address
Example request of clique_getSignersAtNumber
curl --data '{"method":"clique_getSignersAtNumber","params":[number],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.getSignersAtNumber

clique_getSnapshot

Retrieves a snapshot of all clique state at a given block.

Invocation
{"method":"clique_getSnapshot","params":[]}
This method doesn't have parameters.
Returned typeDescription
Snapshot object
curl --data '{"method":"clique_getSnapshot","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.getSnapshot

clique_getSnapshotAtHash

Retrieves the state snapshot at a given block.

Invocation
{"method":"clique_getSnapshotAtHash","params":[hash]}
ParameterTypeDescription
hashHash
Returned typeDescription
Snapshot object
curl --data '{"method":"clique_getSnapshotAtHash","params":[hash],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.getSnapshotAtHash

clique_produceBlock

Forces Clique block producer to produce a new block

Invocation
{"method":"clique_produceBlock","params":[parentHash]}
ParameterTypeDescription
parentHashHash
Returned typeDescription
Boolean
Example request of clique_produceBlock
curl --data '{"method":"clique_produceBlock","params":[parentHash],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.produceBlock

clique_propose

Adds a new authorization proposal that the signer will attempt to push through. If the vote parameter is true, the local signer votes for the given address to be included in the set of authorized signers. With vote set to false, the signer is against the address.

Invocation
{"method":"clique_propose","params":[signer, vote]}
ParameterTypeDescription
signerAddress
voteBoolean
Returned typeDescription
Boolean
Example request of clique_propose
curl --data '{"method":"clique_propose","params":[signer, vote],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI clique.propose

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/debug.html b/docs/interacting-with-nethermind/json-rpc-api/debug.html new file mode 100644 index 000000000..730164ff2 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/debug.html @@ -0,0 +1,17 @@ + + + + + +debug | Nethermind Documentation + + + + + +
+

debug

debug_deleteChainSlice

Deletes a slice of a chain from the tree on all branches (Nethermind specific).

Invocation
{"method":"debug_deleteChainSlice","params":[startNumber]}
ParameterTypeDescription
startNumberQuantity
Returned typeDescription
Quantity
Example request of debug_deleteChainSlice
curl --data '{"method":"debug_deleteChainSlice","params":[startNumber],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

debug_getBlockRlp

Retrieves a block in the RLP-serialized form.

Invocation
{"method":"debug_getBlockRlp","params":[number]}
ParameterTypeDescription
numberQuantity
Returned typeDescription
Data
Example request of debug_getBlockRlp
curl --data '{"method":"debug_getBlockRlp","params":[number],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.getBlockRlp

debug_getBlockRlpByHash

Retrieves a block in the RLP-serialized form.

Invocation
{"method":"debug_getBlockRlpByHash","params":[hash]}
ParameterTypeDescription
hashHash
Returned typeDescription
Data
Example request of debug_getBlockRlpByHash
curl --data '{"method":"debug_getBlockRlpByHash","params":[hash],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.getBlockRlpByHash

debug_getChainLevel

Retrieves a representation of tree branches on a given chain level (Nethermind specific).

Invocation
{"method":"debug_getChainLevel","params":[number]}
ParameterTypeDescription
numberQuantity
Returned typeDescription
ChainLevelForRpc object
curl --data '{"method":"debug_getChainLevel","params":[number],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.getChainLevel

debug_getConfigValue

Retrieves the Nethermind configuration value, e.g. JsonRpc.Enabled

Invocation
{"method":"debug_getConfigValue","params":[category, name]}
ParameterTypeDescription
categoryString
nameString
Returned typeDescription
Object
Example request of debug_getConfigValue
curl --data '{"method":"debug_getConfigValue","params":[category, name],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

debug_getSyncStage

Retrives Nethermind Sync Stage, With extra Metadata

Invocation
{"method":"debug_getSyncStage","params":[]}
This method doesn't have parameters.
Returned typeDescription
SyncReportSymmary object
curl --data '{"method":"debug_getSyncStage","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

debug_insertReceipts

Insert receipts for the block after verifying receipts root correctness.

Invocation
{"method":"debug_insertReceipts","params":[blockParameter, receiptForRpc]}
ParameterTypeDescription
blockParameterBlockParameter object
receiptForRpcReceiptForRpc[] object
Returned typeDescription
Boolean
curl --data '{"method":"debug_insertReceipts","params":[blockParameter, receiptForRpc],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

debug_migrateReceipts

Sets the block number up to which receipts will be migrated to (Nethermind specific).

Invocation
{"method":"debug_migrateReceipts","params":[blockNumber]}
ParameterTypeDescription
blockNumberQuantity
Returned typeDescription
Boolean
Example request of debug_migrateReceipts
curl --data '{"method":"debug_migrateReceipts","params":[blockNumber],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.migrateReceipts

debug_resetHead

Updates / resets head block - use only when the node got stuck due to DB / memory corruption (Nethermind specific).

Invocation
{"method":"debug_resetHead","params":[blockHash]}
ParameterTypeDescription
blockHashHash
Returned typeDescription
Boolean
Example request of debug_resetHead
curl --data '{"method":"debug_resetHead","params":[blockHash],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

debug_traceBlock

Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The parent of the block must be present or it will fail.

Invocation
{"method":"debug_traceBlock","params":[blockRlp, options]}
ParameterTypeDescription
blockRlpData
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceBlock","params":[blockRlp, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.traceBlock

debug_traceBlockByHash

Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the database.

Invocation
{"method":"debug_traceBlockByHash","params":[blockHash, options]}
ParameterTypeDescription
blockHashHash
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceBlockByHash","params":[blockHash, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.traceBlockByHash

debug_traceBlockByNumber

Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block that is already present in the database.

Invocation
{"method":"debug_traceBlockByNumber","params":[blockParameter, options]}
ParameterTypeDescription
blockParameterBlockParameter object
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceBlockByNumber","params":[blockParameter, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.traceBlockByNumber

debug_traceCall

This method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base. The block can be specified either by hash or by number. It takes the same input object as a eth_call. It returns the same output as debug_traceTransaction.

Invocation
{"method":"debug_traceCall","params":[call, blockParameter, options]}
ParameterTypeDescription
callTransactionForRpc object
blockParameterBlockParameter object
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceCall","params":[call, blockParameter, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

debug_traceTransaction

This method will attempt to run the transaction in the exact same manner as it was executed on the network. It will replay any transaction that may have been executed prior to this one before it will finally attempt to execute the transaction that corresponds to the given hash.

Invocation
{"method":"debug_traceTransaction","params":[transactionHash, options]}
ParameterTypeDescription
transactionHashHash
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceTransaction","params":[transactionHash, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.traceTransaction

debug_traceTransactionByBlockAndIndex

Invocation
{"method":"debug_traceTransactionByBlockAndIndex","params":[blockParameter, txIndex, options]}
ParameterTypeDescription
blockParameterBlockParameter object
txIndexQuantity
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceTransactionByBlockAndIndex","params":[blockParameter, txIndex, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.traceTransactionByBlockAndIndex

debug_traceTransactionByBlockhashAndIndex

Invocation
{"method":"debug_traceTransactionByBlockhashAndIndex","params":[blockHash, txIndex, options]}
ParameterTypeDescription
blockHashHash
txIndexQuantity
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceTransactionByBlockhashAndIndex","params":[blockHash, txIndex, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.traceTransactionByBlockhashAndIndex

debug_traceTransactionInBlockByHash

Invocation
{"method":"debug_traceTransactionInBlockByHash","params":[blockRlp, transactionHash, options]}
ParameterTypeDescription
blockRlpData
transactionHashHash
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceTransactionInBlockByHash","params":[blockRlp, transactionHash, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.traceTransactionInBlockByHash

debug_traceTransactionInBlockByIndex

Invocation
{"method":"debug_traceTransactionInBlockByIndex","params":[blockRlp, txIndex, options]}
ParameterTypeDescription
blockRlpData
txIndexQuantity
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
curl --data '{"method":"debug_traceTransactionInBlockByIndex","params":[blockRlp, txIndex, options],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI debug.traceTransactionInBlockByIndex

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example.html b/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example.html new file mode 100644 index 000000000..67150ac8c --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-example.html @@ -0,0 +1,19 @@ + + + + + +Engine JsonRpc Config Example | Nethermind Documentation + + + + + +
+

Engine JsonRpc Config Example

In this page we will layout an example configuration for the JsonRpc module.

./Nethermind.Runner \

--JsonRpc.EnginePort=8551 \

--JsonRpc.JwtSecretFile="keystore/jwt-secret"

or

./Nethermind.Runner

--JsonRpc.EnginePort=8551

--JsonRpc.EngineHost=0.0.0.0

--JsonRpc.JwtSecretFile="keystore/jwt-secret"

In the first example above the consensus client can connect to Nethermind on port 8551 if the consensus client is on the +same machine. JsonRpc for other things is available at port 8545 on the same machine.

If you want to use a consensus client that's on a different machine, you can add the JsonRpc.EngineHost parameter and +use 0.0.0.0 like the second example above. This will expose the JsonRpc.Engine to the outside.

danger

If you want to changeJsonRpc.EngineHost, JsonRpc.EnginePort should be specified as well.

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/eth.html b/docs/interacting-with-nethermind/json-rpc-api/eth.html new file mode 100644 index 000000000..954fc6ca7 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/eth.html @@ -0,0 +1,17 @@ + + + + + +eth | Nethermind Documentation + + + + + +
+

eth

eth_blockNumber

Returns current block number

Invocation
{"method":"eth_blockNumber","params":[]}
This method doesn't have parameters.
Returned typeDescription
Quantity
curl --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.blockNumber

eth_call

Executes a tx call (does not create a transaction)

Invocation
{"method":"eth_call","params":[transactionCall, blockParameter]}
ParameterTypeDescription
transactionCallTransactionForRpc object
blockParameterBlockParameter object
Returned typeDescription
String
curl --data '{"method":"eth_call","params":[transactionCall, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.call

eth_chainId

Returns ChainID

Invocation
{"method":"eth_chainId","params":[]}
This method doesn't have parameters.
Returned typeDescription
Quantity
curl --data '{"method":"eth_chainId","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.chainId

eth_createAccessList

Creates an EIP2930 type AccessList for the given transaction

info

Hint: If your transaction has code executed, then you can generate transaction access list with eth_createAccessList. If you send it with your transaction then it will lower your gas cost on Ethereum

Invocation
{"method":"eth_createAccessList","params":[transactionCall, blockParameter, optimize]}
ParameterTypeDescription
transactionCallTransactionForRpc objectTransaction's details
blockParameterBlockParameter object(optional)
optimizeBoolean(optional)
Returned typeDescription
AccessListForRpc object
curl --data '{"method":"eth_createAccessList","params":[transactionCall, blockParameter, optimize],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.createAccessList

eth_estimateGas

Executes a tx call and returns gas used (does not create a transaction)

Invocation
{"method":"eth_estimateGas","params":[transactionCall, blockParameter]}
ParameterTypeDescription
transactionCallTransactionForRpc object
blockParameterBlockParameter object
Returned typeDescription
Quantity
curl --data '{"method":"eth_estimateGas","params":[transactionCall, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.estimateGas

eth_feeHistory

Returns block fee history.

Invocation
{"method":"eth_feeHistory","params":[blockCount, newestBlock, rewardPercentiles]}
ParameterTypeDescription
blockCountQuantity
newestBlockBlockParameter object
rewardPercentilesDouble[] object
Returned typeDescription
FeeHistoryResults object
curl --data '{"method":"eth_feeHistory","params":[blockCount, newestBlock, rewardPercentiles],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.feeHistory

eth_getAccount

Retrieves Accounts via Address and Blocknumber

Invocation
{"method":"eth_getAccount","params":[accountAddress, blockParameter]}
ParameterTypeDescription
accountAddressAddress
blockParameterBlockParameter object
Returned typeDescription
AccountForRpc object
curl --data '{"method":"eth_getAccount","params":[accountAddress, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getAccount

eth_getBalance

Returns account balance

Invocation
{"method":"eth_getBalance","params":[address, blockParameter]}
ParameterTypeDescription
addressAddress
blockParameterBlockParameter object
Returned typeDescription
Quantity
curl --data '{"method":"eth_getBalance","params":[address, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getBalance

eth_getBlockByHash

Retrieves a block by hash

Invocation
{"method":"eth_getBlockByHash","params":[blockHash, returnFullTransactionObjects]}
ParameterTypeDescription
blockHashHash
returnFullTransactionObjectsBoolean
Returned typeDescription
BlockForRpc object
curl --data '{"method":"eth_getBlockByHash","params":[blockHash, returnFullTransactionObjects],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getBlockByHash

eth_getBlockByNumber

Retrieves a block by number

Invocation
{"method":"eth_getBlockByNumber","params":[blockParameter, returnFullTransactionObjects]}
ParameterTypeDescription
blockParameterBlockParameter object
returnFullTransactionObjectsBoolean
Returned typeDescription
BlockForRpc object
curl --data '{"method":"eth_getBlockByNumber","params":[blockParameter, returnFullTransactionObjects],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getBlockByNumber

eth_getBlockTransactionCountByHash

Returns number of transactions in the block block hash

Invocation
{"method":"eth_getBlockTransactionCountByHash","params":[blockHash]}
ParameterTypeDescription
blockHashHash
Returned typeDescription
Quantity
curl --data '{"method":"eth_getBlockTransactionCountByHash","params":[["0x199c2ef63392fb67f929fe0580e11f62fa6c54b9951a624896da91375a6805b1"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getBlockTransactionCountByHash

eth_getBlockTransactionCountByNumber

Returns number of transactions in the block by block number

Invocation
{"method":"eth_getBlockTransactionCountByNumber","params":[blockParameter]}
ParameterTypeDescription
blockParameterBlockParameter object
Returned typeDescription
Quantity
curl --data '{"method":"eth_getBlockTransactionCountByNumber","params":[["8934677"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getBlockTransactionCountByNumber

eth_getCode

Returns account code at given address and block

Invocation
{"method":"eth_getCode","params":[address, blockParameter]}
ParameterTypeDescription
addressAddress
blockParameterBlockParameter object
Returned typeDescription
Data
curl --data '{"method":"eth_getCode","params":[address, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getCode

eth_getFilterChanges

Reads filter changes

Invocation
{"method":"eth_getFilterChanges","params":[filterId]}
ParameterTypeDescription
filterIdQuantity
Returned typeDescription
Array
curl --data '{"method":"eth_getFilterChanges","params":[["0x9"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getFilterChanges

eth_getFilterLogs

Reads filter changes

Invocation
{"method":"eth_getFilterLogs","params":[filterId]}
ParameterTypeDescription
filterIdQuantity
Returned typeDescription
Array
curl --data '{"method":"eth_getFilterLogs","params":[["0x9"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

eth_getLogs

Reads logs

Invocation
{"method":"eth_getLogs","params":[filter]}
ParameterTypeDescription
filterFilter object
Returned typeDescription
Array
curl --data '{"method":"eth_getLogs","params":[filter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getLogs

eth_getProof

https://github.com/ethereum/EIPs/issues/1186

Invocation
{"method":"eth_getProof","params":[accountAddress, hashRate, blockParameter]}
ParameterTypeDescription
accountAddressAddress
hashRateArray
blockParameterBlockParameter object
Returned typeDescription
AccountProof object
curl --data '{"method":"eth_getProof","params":[accountAddress, hashRate, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getProof

eth_getStorageAt

Returns storage data at address. storage_index

Invocation
{"method":"eth_getStorageAt","params":[address, positionIndex, blockParameter]}
ParameterTypeDescription
addressAddress
positionIndexQuantity
blockParameterBlockParameter object
Returned typeDescription
Data
curl --data '{"method":"eth_getStorageAt","params":[address, positionIndex, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getStorageAt

eth_getTransactionByBlockHashAndIndex

Retrieves a transaction by block hash and index

Invocation
{"method":"eth_getTransactionByBlockHashAndIndex","params":[blockHash, positionIndex]}
ParameterTypeDescription
blockHashHash
positionIndexQuantity
Returned typeDescription
TransactionForRpc object
curl --data '{"method":"eth_getTransactionByBlockHashAndIndex","params":[blockHash, positionIndex],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

eth_getTransactionByBlockNumberAndIndex

Retrieves a transaction by block number and index

Invocation
{"method":"eth_getTransactionByBlockNumberAndIndex","params":[blockParameter, positionIndex]}
ParameterTypeDescription
blockParameterBlockParameter object
positionIndexQuantity
Returned typeDescription
TransactionForRpc object
curl --data '{"method":"eth_getTransactionByBlockNumberAndIndex","params":[blockParameter, positionIndex],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getTransactionByBlockNumberAndIndex

eth_getTransactionByHash

Retrieves a transaction by hash

Invocation
{"method":"eth_getTransactionByHash","params":[transactionHash]}
ParameterTypeDescription
transactionHashHash
Returned typeDescription
TransactionForRpc object
curl --data '{"method":"eth_getTransactionByHash","params":["0xabca23910646013d608ec671de099447ab60b2b7159ad8319c3c088e8d9ea0fa"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getTransactionByHash

eth_getTransactionCount

Returns account nonce (number of trnsactions from the account since genesis) at the given block number

Invocation
{"method":"eth_getTransactionCount","params":[address, blockParameter]}
ParameterTypeDescription
addressAddress
blockParameterBlockParameter object
Returned typeDescription
Quantity
curl --data '{"method":"eth_getTransactionCount","params":[address, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getTransactionCount

eth_getTransactionReceipt

Retrieves a transaction receipt by tx hash

Invocation
{"method":"eth_getTransactionReceipt","params":[txHashData]}
ParameterTypeDescription
txHashDataHash
Returned typeDescription
ReceiptForRpc object
curl --data '{"method":"eth_getTransactionReceipt","params":[["0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getTransactionReceipt

eth_getUncleByBlockHashAndIndex

Retrieves an uncle block header by block hash and uncle index

Invocation
{"method":"eth_getUncleByBlockHashAndIndex","params":[blockHashData, positionIndex]}
ParameterTypeDescription
blockHashDataHash
positionIndexQuantity
Returned typeDescription
BlockForRpc object
curl --data '{"method":"eth_getUncleByBlockHashAndIndex","params":[blockHashData, positionIndex],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getUncleByBlockHashAndIndex

eth_getUncleByBlockNumberAndIndex

Retrieves an uncle block header by block number and uncle index

Invocation
{"method":"eth_getUncleByBlockNumberAndIndex","params":[blockParameter, positionIndex]}
ParameterTypeDescription
blockParameterBlockParameter object
positionIndexQuantity
Returned typeDescription
BlockForRpc object
curl --data '{"method":"eth_getUncleByBlockNumberAndIndex","params":[blockParameter, positionIndex],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getUncleByBlockNumberAndIndex

eth_getUncleCountByBlockHash

Returns number of uncles in the block by block hash

Invocation
{"method":"eth_getUncleCountByBlockHash","params":[blockHash]}
ParameterTypeDescription
blockHashHash
Returned typeDescription
Quantity
curl --data '{"method":"eth_getUncleCountByBlockHash","params":[["0xe495c3385bb9162103bc07989d7160c38759e017c37c7d0608268bd5989d6bed "]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

eth_getUncleCountByBlockNumber

Returns number of uncles in the block by block number

Invocation
{"method":"eth_getUncleCountByBlockNumber","params":[blockParameter]}
ParameterTypeDescription
blockParameterBlockParameter object
Returned typeDescription
Quantity
curl --data '{"method":"eth_getUncleCountByBlockNumber","params":[["5127400"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.getUncleCountByBlockNumber

eth_newBlockFilter

Creates an update filter

Invocation
{"method":"eth_newBlockFilter","params":[]}
This method doesn't have parameters.
Returned typeDescription
Quantity
curl --data '{"method":"eth_newBlockFilter","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

eth_newFilter

Creates an update filter

Invocation
{"method":"eth_newFilter","params":[filter]}
ParameterTypeDescription
filterFilter object
Returned typeDescription
Quantity
curl --data '{"method":"eth_newFilter","params":[[{"toBlock":"latest"}]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

eth_newPendingTransactionFilter

Creates an update filter

Invocation
{"method":"eth_newPendingTransactionFilter","params":[]}
This method doesn't have parameters.
Returned typeDescription
Quantity
curl --data '{"method":"eth_newPendingTransactionFilter","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.newPendingTransactionFilter

eth_pendingTransactions

Returns the pending transactions list

Invocation
{"method":"eth_pendingTransactions","params":[]}
This method doesn't have parameters.
Returned typeDescription
TransactionForRpc object
curl --data '{"method":"eth_pendingTransactions","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.pendingTransactions

eth_protocolVersion

Returns ETH protocol version

Invocation
{"method":"eth_protocolVersion","params":[]}
This method doesn't have parameters.
Returned typeDescription
String
curl --data '{"method":"eth_protocolVersion","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.protocolVersion

eth_sendRawTransaction

Send a raw transaction to the tx pool and broadcasting

Invocation
{"method":"eth_sendRawTransaction","params":[transaction]}
ParameterTypeDescription
transactionData
Returned typeDescription
Hash
curl --data '{"method":"eth_sendRawTransaction","params":[["0xf86380843b9aca0082520894b943b13292086848d8180d75c73361107920bb1a80802ea0385656b91b8f1f5139e9ba3449b946a446c9cfe7adb91b180ddc22c33b17ac4da01fe821879d386b140fd8080dcaaa98b8c709c5025c8c4dea1334609ebac41b6c"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.sendRawTransaction

eth_sendTransaction

Send a transaction to the tx pool and broadcasting

Invocation
{"method":"eth_sendTransaction","params":[rpcTx]}
ParameterTypeDescription
rpcTxTransactionForRpc object
Returned typeDescription
Hash
curl --data '{"method":"eth_sendTransaction","params":[[{"From": "0xc2208fe87805279b03c1a8a78d7ee4bfdb0e48ee", "Gas":"21000","GasPrice":"20000000000", "Nonce":"23794", "To":"0x2d44c0e097f6cd0f514edac633d82e01280b4a5c"}]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.sendTransaction

eth_syncing

Returns syncing status

Invocation
{"method":"eth_syncing","params":[]}
This method doesn't have parameters.
Returned typeDescription
SyncingResult object
curl --data '{"method":"eth_syncing","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI eth.syncing

eth_uninstallFilter

Creates an update filter

Invocation
{"method":"eth_uninstallFilter","params":[filterId]}
ParameterTypeDescription
filterIdQuantity
Returned typeDescription
Boolean
Example request of eth_uninstallFilter
curl --data '{"method":"eth_uninstallFilter","params":[filterId],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/evm.html b/docs/interacting-with-nethermind/json-rpc-api/evm.html new file mode 100644 index 000000000..96b29e9d0 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/evm.html @@ -0,0 +1,17 @@ + + + + + +evm | Nethermind Documentation + + + + + +
+

evm

evm_mine

Triggers block production.

Invocation
{"method":"evm_mine","params":[]}
This method doesn't have parameters.
Returned typeDescription
Boolean
Example request of evm_mine
curl --data '{"method":"evm_mine","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/net.html b/docs/interacting-with-nethermind/json-rpc-api/net.html new file mode 100644 index 000000000..2c9664d4f --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/net.html @@ -0,0 +1,17 @@ + + + + + +net | Nethermind Documentation + + + + + +
+

net

net_listening

Invocation
{"method":"net_listening","params":[]}
This method doesn't have parameters.
Returned typeDescription
Boolean
curl --data '{"method":"net_listening","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

net_localAddress

Invocation
{"method":"net_localAddress","params":[]}
This method doesn't have parameters.
Returned typeDescription
Address
curl --data '{"method":"net_localAddress","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

net_localEnode

Invocation
{"method":"net_localEnode","params":[]}
This method doesn't have parameters.
Returned typeDescription
String
curl --data '{"method":"net_localEnode","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI net.localEnode

net_peerCount

Invocation
{"method":"net_peerCount","params":[]}
This method doesn't have parameters.
Returned typeDescription
Quantity
curl --data '{"method":"net_peerCount","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
[See also CLI net.peerCount](https://docs.nethermind.io/nethermind/nethermind-utilities/cli/net#net-peercount)

net_version

Invocation
{"method":"net_version","params":[]}
This method doesn't have parameters.
Returned typeDescription
String
curl --data '{"method":"net_version","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
[See also CLI net.version](https://docs.nethermind.io/nethermind/nethermind-utilities/cli/net#net-version)
+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/parity.html b/docs/interacting-with-nethermind/json-rpc-api/parity.html new file mode 100644 index 000000000..86ec16f65 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/parity.html @@ -0,0 +1,17 @@ + + + + + +parity | Nethermind Documentation + + + + + +
+

parity

parity_clearEngineSigner

Clears an authority account for signing consensus messages. Blocks will not be sealed.

Invocation
{"method":"parity_clearEngineSigner","params":[]}
This method doesn't have parameters.
Returned typeDescription
Boolean
Example request of parity_clearEngineSigner
curl --data '{"method":"parity_clearEngineSigner","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI parity.clearEngineSigner

parity_enode

Returns the node enode URI.

Invocation
{"method":"parity_enode","params":[]}
This method doesn't have parameters.
Returned typeDescription
String
curl --data '{"method":"parity_enode","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI parity.enode

parity_getBlockReceipts

Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one.

Invocation
{"method":"parity_getBlockReceipts","params":[blockParameter]}
ParameterTypeDescription
blockParameterBlockParameter object
Returned typeDescription
ReceiptForRpc object
curl --data '{"method":"parity_getBlockReceipts","params":[latest],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI parity.getBlockReceipts

parity_netPeers

Returns connected peers. Peers with non-empty protocols have completed handshake.

Invocation
{"method":"parity_netPeers","params":[]}
This method doesn't have parameters.
Returned typeDescription
ParityNetPeers object
curl --data '{"method":"parity_netPeers","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI parity.netPeers

parity_pendingTransactions

Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given sender address.

Invocation
{"method":"parity_pendingTransactions","params":[address]}
ParameterTypeDescription
addressAddress
Returned typeDescription
ParityTransaction object
curl --data '{"method":"parity_pendingTransactions","params":[["0x78467cada5f1883e79fcf0f3ebfa50abeec8c820"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI parity.pendingTransactions

parity_setEngineSigner

Sets an authority account for signing consensus messages.

Invocation
{"method":"parity_setEngineSigner","params":[address, password]}
ParameterTypeDescription
addressAddress
passwordString
Returned typeDescription
Boolean
curl --data '{"method":"parity_setEngineSigner","params":[address, password],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI parity.setEngineSigner

parity_setEngineSignerSecret

Sets an authority account for signing consensus messages.

Invocation
{"method":"parity_setEngineSignerSecret","params":[privateKey]}
ParameterTypeDescription
privateKeyString
Returned typeDescription
Boolean
Example request of parity_setEngineSignerSecret
curl --data '{"method":"parity_setEngineSignerSecret","params":[privateKey],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI parity.setEngineSignerSecret

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/personal.html b/docs/interacting-with-nethermind/json-rpc-api/personal.html new file mode 100644 index 000000000..72d5df45d --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/personal.html @@ -0,0 +1,17 @@ + + + + + +personal | Nethermind Documentation + + + + + +
+

personal

personal_importRawKey

Invocation
{"method":"personal_importRawKey","params":[keyData, passphrase]}
ParameterTypeDescription
keyDataData
passphraseString
Returned typeDescription
Address
curl --data '{"method":"personal_importRawKey","params":[keyData, passphrase],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI personal.importRawKey

personal_listAccounts

Invocation
{"method":"personal_listAccounts","params":[]}
This method doesn't have parameters.
Returned typeDescription
Address
curl --data '{"method":"personal_listAccounts","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI personal.listAccounts

personal_lockAccount

Invocation
{"method":"personal_lockAccount","params":[address]}
ParameterTypeDescription
addressAddress
Returned typeDescription
Boolean
curl --data '{"method":"personal_lockAccount","params":[707Fc13C0eB628c074f7ff514Ae21ACaeE0ec072],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI personal.lockAccount

personal_newAccount

Invocation
{"method":"personal_newAccount","params":[passphrase]}
ParameterTypeDescription
passphraseString
Returned typeDescription
Address
curl --data '{"method":"personal_newAccount","params":[testPass],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI personal.newAccount

personal_unlockAccount

Invocation
{"method":"personal_unlockAccount","params":[address, passphrase]}
ParameterTypeDescription
addressAddress
passphraseString
Returned typeDescription
Boolean
curl --data '{"method":"personal_unlockAccount","params":[address, passphrase],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI personal.unlockAccount

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/proof.html b/docs/interacting-with-nethermind/json-rpc-api/proof.html new file mode 100644 index 000000000..8e6e2bf92 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/proof.html @@ -0,0 +1,17 @@ + + + + + +proof | Nethermind Documentation + + + + + +
+

proof

proof_getTransactionByHash

This function returns the same result as eth_getTransactionReceipt and also a tx proof, receipt proof and serialized block headers.

Invocation
{"method":"proof_getTransactionByHash","params":[txHash, includeHeader]}
ParameterTypeDescription
txHashHash
includeHeaderBoolean
Returned typeDescription
TransactionWithProof object
curl --data '{"method":"proof_getTransactionByHash","params":[txHash, includeHeader],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI proof.getTransactionByHash

proof_getTransactionReceipt

This function should return the same result as eth_call and also proofs of all used accounts and their storages and serialized block headers.

Invocation
{"method":"proof_getTransactionReceipt","params":[txHash, includeHeader]}
ParameterTypeDescription
txHashHash
includeHeaderBoolean
Returned typeDescription
ReceiptWithProof object
curl --data '{"method":"proof_getTransactionReceipt","params":[txHash, includeHeader],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI proof.getTransactionReceipt

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/rpc.html b/docs/interacting-with-nethermind/json-rpc-api/rpc.html new file mode 100644 index 000000000..dcfa0e3ee --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/rpc.html @@ -0,0 +1,17 @@ + + + + + +rpc | Nethermind Documentation + + + + + +
+

rpc

rpc_modules

Retrieves a list of modules.

Invocation
{"method":"rpc_modules","params":[]}
This method doesn't have parameters.
Returned typeDescription
Array
Example request of rpc_modules
curl --data '{"method":"rpc_modules","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/subscribe.html b/docs/interacting-with-nethermind/json-rpc-api/subscribe.html new file mode 100644 index 000000000..e968aded0 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/subscribe.html @@ -0,0 +1,18 @@ + + + + + +Subscribe module | Nethermind Documentation + + + + + +
+

Subscribe module

eth_subscribe

Starts a subscription to specific event. For every event matching subscription, JSON-RPC notification with event details and subscription ID will be sent to a client.
+Subscriptions are created with a regular RPC call, with eth_subscribe as method and subscription type as first parameter. If successful, returns subscription ID.

Parameters

ParameterTypeDescription
subscriptionTypestringType of subscription you want to subscribe to.
argumentsFilter objectOptional arguments available only for logs subscription.

Returns

Returned typeDescription
stringSubscription ID, used to identify subscription and to unsubscribe.

Notifications returns

Depends on the subscription type.

Supported subscriptions

  • newHeads - subscribes to incoming block headers.
  • logs - subscribes to incoming logs, filtered by the given options.
  • newPendingTransactions - subscribes to incoming pending transactions.
  • syncing - subscribes to syncing events.

Additional informations

  • Subscriptions require a full duplex connections. Due to this reason, they are not available via HTTP and supported only on WebSockets.

    Learn how to install and use wscat - simple command line WebSockets client.

  • Subscriptions are coupled to a connection. If the connection is closed, all subscriptions created over this connection are removed.

  • Subscribing to some events can cause a flood of notifications, e.g. listening for all logs/blocks when the node starts to synchronize.

newHeads

Subscribes to incoming block headers. Fires a notification each time a new header is appended to the chain, including chain reorganizations. Returns Block object.

Parameter: "newHeads"

Example

{"method":"eth_subscribe","params":["newHeads"],"id":1,"jsonrpc":"2.0"}

logs

Subscribes to incoming logs, filtered by the given options. In case of a chain reorganization previous sent logs that are on the old chain will be resend with the removed property set to true.

Parameters:

  • "logs"
  • Filter object (optional)
    • fromBlock - "earliest", "pending" or "latest" (optional)
    • toBlock - "earliest", "pending" or "latest" (optional)
    • address - either an address or an array of addresses. Only logs that are created from these addresses are returned (optional)
    • topics - only logs which match the specified topics (optional)

If RPC call doesn't have second parameter, or parameters fromBlock or toBlock are not provided, subscription will use default filter: fromBlock - "latest", toBlock - "latest"

Example

{
"method":"eth_subscribe",
"params":
["logs",
{
"fromBlock":"latest",
"toBlock":"latest",
"address":"0xb7705ae4c6f81b66cdb323c65f4e8133690fc099",
"topics":["0x03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760"]
}
],
"id":1,
"jsonrpc":"2.0"
}

newPendingTransactions

Subscribes to incoming pending transactions. Returns transaction hash.

Parameter: "newPendingTransactions"

Example

{"method":"eth_subscribe","params":["newPendingTransactions"],"id":1,"jsonrpc":"2.0"}

droppedPendingTransactions

Subscribes to transactions evicted from transaction pool. Returns transaction hash.

Parameter: "droppedPendingTransactions"

Example

{"method":"eth_subscribe","params":["droppedPendingTransactions"],"id":1,"jsonrpc":"2.0"}

syncing

Subscribe to syncing events. Returns boolean false once if node is synced or an object with statistics once when the node starts syncing.

Parameter: "syncing"

Example

{"method":"eth_subscribe","params":["syncing"],"id":1,"jsonrpc":"2.0"}

eth_unsubscribe

Unsubscribes from subscription. Subscriptions are cancelled with a regular RPC call with eth_unsubscribe as method and subscription ID as a parameter. It returns a bool indicating if the subscription was cancelled successful.

Parameters

Parameter nameTypeDescription
subscriptionIdstringID of subscription you want to unsubscribe.

Returns

Returned typeDescription
booltrue if subscription was cancelled successful, false if not.

Example

{"method":"eth_unsubscribe","params":["0x3cd2bcd1630948fe89190ca27b3b5913"],"id":1,"jsonrpc":"2.0"}
+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/trace.html b/docs/interacting-with-nethermind/json-rpc-api/trace.html new file mode 100644 index 000000000..e6ff934cf --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/trace.html @@ -0,0 +1,17 @@ + + + + + +trace | Nethermind Documentation + + + + + +
+

trace

trace_block

Returns traces created at given block.

Invocation
{"method":"trace_block","params":[numberOrTag]}
ParameterTypeDescription
numberOrTagBlockParameter object
Returned typeDescription
Array
curl --data '{"method":"trace_block","params":[latest],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI trace.block

trace_call

Traces a call, returning the traces

Invocation
{"method":"trace_call","params":[call, traceTypes, blockParameter]}
ParameterTypeDescription
callTransactionForRpc object
traceTypesArrayPossible values : ["VmTrace", "StateDiff", "Trace", "Rewards", "All"]
blockParameterBlockParameter object
Returned typeDescription
ParityTxTraceFromReplay object
curl --data '{"method":"trace_call","params":[call, traceTypes, blockParameter],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI trace.call

trace_filter

Return all traces of the given filter

Invocation
{"method":"trace_filter","params":[traceFilterForRpc]}
ParameterTypeDescription
traceFilterForRpcTraceFilterForRpc object
Returned typeDescription
Array
curl --data '{"method":"trace_filter","params":[traceFilterForRpc],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI trace.filter

trace_rawTransaction

Traces a call to eth_sendRawTransaction without making the call, returning the traces

Invocation
{"method":"trace_rawTransaction","params":[data, traceTypes]}
ParameterTypeDescription
dataData
traceTypesArrayPossible values : ["VmTrace", "StateDiff", "Trace", "Rewards", "All"]
Returned typeDescription
ParityTxTraceFromReplay object
curl --data '{"method":"trace_rawTransaction","params":[data, traceTypes],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI trace.rawTransaction

trace_replayBlockTransactions

Replays all transactions in a block returning the requested traces for each transaction.

Invocation
{"method":"trace_replayBlockTransactions","params":[blockParameter, traceTypes]}
ParameterTypeDescription
blockParameterBlockParameter object
traceTypesArrayPossible values : ["VmTrace", "StateDiff", "Trace", "Rewards", "All"]
Returned typeDescription
Array
curl --data '{"method":"trace_replayBlockTransactions","params":[blockParameter, traceTypes],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI trace.replayBlockTransactions

trace_replayTransaction

Replays a transaction, returning the traces.

Invocation
{"method":"trace_replayTransaction","params":[txHash, traceTypes]}
ParameterTypeDescription
txHashHash
traceTypesArrayPossible values : ["VmTrace", "StateDiff", "Trace", "Rewards", "All"]
Returned typeDescription
ParityTxTraceFromReplay object
curl --data '{"method":"trace_replayTransaction","params":[txHash, traceTypes],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI trace.replayTransaction

trace_transaction

Returns all traces of given transaction

Invocation
{"method":"trace_transaction","params":[txHash]}
ParameterTypeDescription
txHashHash
Returned typeDescription
Array
curl --data '{"method":"trace_transaction","params":[["0x203abf19610ce15bc509d4b341e907ff8c5a8287ae61186fd4da82146408c28c"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI trace.transaction

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/txpool.html b/docs/interacting-with-nethermind/json-rpc-api/txpool.html new file mode 100644 index 000000000..ce1e39ae9 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/txpool.html @@ -0,0 +1,17 @@ + + + + + +txpool | Nethermind Documentation + + + + + +
+

txpool

txpool_content

Returns tx pool content.

Invocation
{"method":"txpool_content","params":[]}
This method doesn't have parameters.
Returned typeDescription
TxPoolContent object
curl --data '{"method":"txpool_content","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI txpool.content

txpool_inspect

Returns a detailed info on tx pool transactions.

Invocation
{"method":"txpool_inspect","params":[]}
This method doesn't have parameters.
Returned typeDescription
TxPoolInspection object
curl --data '{"method":"txpool_inspect","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI txpool.inspect

txpool_status

Returns a tx pool status.

Invocation
{"method":"txpool_status","params":[]}
This method doesn't have parameters.
Returned typeDescription
TxPoolStatus object
curl --data '{"method":"txpool_status","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI txpool.status

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/web3.html b/docs/interacting-with-nethermind/json-rpc-api/web3.html new file mode 100644 index 000000000..b80392aab --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/web3.html @@ -0,0 +1,17 @@ + + + + + +web3 | Nethermind Documentation + + + + + +
+

web3

web3_clientVersion

Returns the current client version.

Invocation
{"method":"web3_clientVersion","params":[]}
This method doesn't have parameters.
Returned typeDescription
String
curl --data '{"method":"web3_clientVersion","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI web3.clientVersion

web3_sha3

Returns Keccak of the given data.

Invocation
{"method":"web3_sha3","params":[data]}
ParameterTypeDescription
dataData
Returned typeDescription
Hash
curl --data '{"method":"web3_sha3","params":[["0x47767638636211111a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01abc"]],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

See also CLI web3.sha3

+ + + + \ No newline at end of file diff --git a/docs/interacting-with-nethermind/json-rpc-api/witness.html b/docs/interacting-with-nethermind/json-rpc-api/witness.html new file mode 100644 index 000000000..ef5905be3 --- /dev/null +++ b/docs/interacting-with-nethermind/json-rpc-api/witness.html @@ -0,0 +1,17 @@ + + + + + +witness | Nethermind Documentation + + + + + +
+

witness

witness_witnesses

Return witness of Block provided

Invocation
{"method":"witness_witnesses","params":[blockParameter]}
ParameterTypeDescription
blockParameterBlockParameter objectBlock to get witness
Returned typeDescription
HashTable of hashes of state nodes that were read during block processing
curl --data '{"method":"witness_witnesses","params":[{"jsonrpc":"2.0","result":["0xa2a9f03b9493046696099d27b2612b99497aa1f392ec966716ab393c715a5bb6"],"id":67}],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation.html b/docs/monitoring/metrics-explanation.html new file mode 100644 index 000000000..472d4a32c --- /dev/null +++ b/docs/monitoring/metrics-explanation.html @@ -0,0 +1,18 @@ + + + + + +Metrics | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/accountabstraction.html b/docs/monitoring/metrics-explanation/accountabstraction.html new file mode 100644 index 000000000..35f09da42 --- /dev/null +++ b/docs/monitoring/metrics-explanation/accountabstraction.html @@ -0,0 +1,17 @@ + + + + + +AccountAbstraction | Nethermind Documentation + + + + + +
+

AccountAbstraction

MetricDescription
nethermind_user_operations_includedTotal number of UserOperation objects included into the chain by this miner
nethermind_user_operations_pendingTotal number of UserOperation objects accepted into the pool
nethermind_user_operations_receivedTotal number of UserOperation objects received for inclusion
nethermind_user_operations_simulatedTotal number of UserOperation objects simulated
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/accountabstraction.network.html b/docs/monitoring/metrics-explanation/accountabstraction.network.html new file mode 100644 index 000000000..5864748b3 --- /dev/null +++ b/docs/monitoring/metrics-explanation/accountabstraction.network.html @@ -0,0 +1,17 @@ + + + + + +AccountAbstraction.Network | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/blockchain.html b/docs/monitoring/metrics-explanation/blockchain.html new file mode 100644 index 000000000..f1140e8b5 --- /dev/null +++ b/docs/monitoring/metrics-explanation/blockchain.html @@ -0,0 +1,17 @@ + + + + + +Blockchain | Nethermind Documentation + + + + + +
+

Blockchain

MetricDescription
nethermind_best_known_block_numberThe estimated highest block available.
nethermind_blockchain_heightThe current height of the canonical chain.
nethermind_blocksTotal number of blocks processed
nethermind_blocks_sealedTotal number of sealed blocks
nethermind_failed_block_sealsTotal number of failed block seals
nethermind_gas_limitGas Limit for processed blocks
nethermind_gas_usedGas Used in processed blocks
nethermind_last_difficultyDifficulty of the last block
nethermind_mgasTotal MGas processed
nethermind_processing_queue_sizeNumber of blocks awaiting for processing.
nethermind_recovery_queue_sizeNumber of blocks awaiting for recovery of public keys from signatures.
nethermind_reorganizationsTotal number of chain reorganizations
nethermind_total_difficultyTotal difficulty on the chain
nethermind_transactionsTotal number of transactions processed
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/consensus.aura.html b/docs/monitoring/metrics-explanation/consensus.aura.html new file mode 100644 index 000000000..c7b1b85d9 --- /dev/null +++ b/docs/monitoring/metrics-explanation/consensus.aura.html @@ -0,0 +1,17 @@ + + + + + +Consensus.AuRa | Nethermind Documentation + + + + + +
+

Consensus.AuRa

MetricDescription
nethermind_au_ra_stepCurrent AuRa step
nethermind_commit_hash_transactionRANDAO number of commit hash transactions
nethermind_emit_initiate_changePOSDAO number of emit init change transactions
nethermind_reported_benign_misbehaviourNumber of reported benign misbehaviour validators
nethermind_reported_malicious_misbehaviourNumber of reported malicious misbehaviour validators
nethermind_reveal_numberRANDAO number of reveal number transactions
nethermind_sealed_transactionsNumber of sealed transactions generated by engine
nethermind_validators_countNumber of current AuRa validators
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/db.html b/docs/monitoring/metrics-explanation/db.html new file mode 100644 index 000000000..36385fcca --- /dev/null +++ b/docs/monitoring/metrics-explanation/db.html @@ -0,0 +1,17 @@ + + + + + +Db | Nethermind Documentation + + + + + +
+

Db

MetricDescription
nethermind_block_infos_db_readsNumber of Block Infos DB reads.
nethermind_block_infos_db_sizeSize of blockInfos DB in bytes
nethermind_block_infos_db_writesNumber of Block Infos DB writes.
nethermind_blocks_db_readsNumber of Blocks DB reads.
nethermind_blocks_db_sizeSize of blocks DB in bytes
nethermind_blocks_db_writesNumber of Blocks DB writes.
nethermind_bloom_db_readsNumber of Bloom DB reads.
nethermind_bloom_db_sizeSize of bloom DB in bytes
nethermind_bloom_db_writesNumber of Bloom DB writes.
nethermind_c_h_t_db_readsNumber of CHT DB reads.
nethermind_cht_db_sizeSize of cht DB in bytes
nethermind_c_h_t_db_writesNumber of CHT DB writes.
nethermind_code_db_readsNumber of Code DB reads.
nethermind_code_db_sizeSize of code DB in bytes
nethermind_code_db_writesNumber of Code DB writes.
nethermind_db_block_cache_memory_sizeSize of unmanaged memory for DB block caches in bytes
nethermind_db_index_filter_memory_sizeSize of unmanaged memory for DB indexes and filters in bytes
nethermind_db_memtable_memory_sizeSize of unmanaged memory for DB memtables in bytes
nethermind_db_statsMetrics extracted from RocksDB Compaction Stats and DB Statistics
nethermind_db_total_memory_sizeSize of total unmanaged memory for DB in bytes
nethermind_header_db_readsNumber of Headers DB reads.
nethermind_header_db_writesNumber of Headers DB writes.
nethermind_headers_db_sizeSize of headers DB in bytes
nethermind_metadata_db_readsNumber of Metadata DB reads.
nethermind_metadata_db_sizeSize of metadata DB in bytes
nethermind_metadata_db_writesNumber of Metadata DB writes.
nethermind_other_db_readsNumber of other DB reads.
nethermind_other_db_writesNumber of other DB writes.
nethermind_receipts_db_readsNumber of Receipts DB reads.
nethermind_receipts_db_sizeSize of receipts DB in bytes
nethermind_receipts_db_writesNumber of Receipts DB writes.
nethermind_state_db_pruningIndicator if StadeDb is being pruned.
nethermind_state_db_readsNumber of State DB reads.
nethermind_state_db_sizeSize of state DB in bytes
nethermind_state_db_writesNumber of State DB writes.
nethermind_state_tree_readsNumber of State Trie reads.
nethermind_state_tree_writesNumber of Blocks Trie writes.
nethermind_storage_tree_readsNumber of storge trie reads.
nethermind_storage_tree_writesNumber of storage trie writes.
nethermind_witness_db_readsNumber of Witness DB reads.
nethermind_witness_db_sizeSize of witness DB in bytes
nethermind_witness_db_writesNumber of Witness DB writes.
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/dotnet-counters.html b/docs/monitoring/metrics-explanation/dotnet-counters.html new file mode 100644 index 000000000..b07598676 --- /dev/null +++ b/docs/monitoring/metrics-explanation/dotnet-counters.html @@ -0,0 +1,17 @@ + + + + + +Using dotnet-counters | Nethermind Documentation + + + + + +
+

Using dotnet-counters

Introduction

Nethermind can be configured to publish its metrics using System.Diagnostics.Metrics. This mechanism is a native tool embedded in .NET Platform. It allows for a low overhead monitoring and reporting. Once .NET Platform metrics are enabled, they can be monitored and collected using dotnet-counters and other tools.

Configuration

Reporting metrics as System.Diagnostics.Metrics is enabled by passing and additional argument --Metrics.CountersEnabled true to the Docker containers,Nethermind.Runner or Nethermind.Launcher e.g. ./Nethermind.Runner --Metrics.CountersEnabled true.

This flag can be configured separately from setting-up-local-metrics-infrastracture.mdas this two reporting modes are treated separately.

Metrics names

Metrics reported by a Nethermind node follow the module convention. Whenever there's a module X, its metrics will be reported under meter Nethermind.X For example, Evm module will be repoted under Nethermind.Evm and so on.

dotnet-counters

dotnet-counters is a tool provided by the .NET team to monitor and collect metrics for further analysis. The usage of it is different when used on the same machine or in the Dockerized environment. To learn more about the tool, please visit the official documentation page of metrics collection with dotnet-counters.

Same machine

When a node is running on the same machine, dotnet-counters , given that the .NET runtime is already installed, can be installed with the following

dotnet tool install -g dotnet-counters

This will install the tool globally and will allow the user to monitor and to collect metrics from any .NET process that is run on the same machine. For further information how to monitor and collect, please refer to the original documentation of this command.

Docker image and docker compose

When running in a Dockerized environment, the most common way is to create a separate docker image for .NET diagnostics. This can be done with the following Dockerfile

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS base

RUN dotnet tool install -g dotnet-counters; \
dotnet tool install -g dotnet-trace; \
echo 'export PATH="$PATH:/root/.dotnet/tools"' >> /root/.bashrc

ENTRYPOINT ["/bin/bash"]

Once it's built, as dotdiag image, it will enable running dotnet-counters from within.

The second part is connecting the dockerized node with the dotdiag. Whether using docker copose or images run manually, it's important to remember that dotnet-counters communicate over a named pipe (Windows) or an IPC socked (Linux, macOS). To make it work, volume mapping should be provided so that the two images share the directory used for the communication. Similarly pid namespace needs to be shared between them.

Let's visit an extract of a docker-compose.yaml that would provide such configuration.

version: "3.9"

services:

execution:
stop_grace_period: 30s
container_name: execution-client
restart: unless-stopped
image: IMAGE_VERSION_GOES_HERE
networks:
- sedge
volumes:
- ./dotnet-tmp:/tmp # /tmp is used to create the IPC socket, expose it as ./dotnet-tmp
ports:
# ports omitted as they are not changed
command:
# make counters enabled so that reporting happens by setting the flag
- --Metrics.CountersEnabled=true
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "10"

# the created dotdiag
dotdiag:
container_name: dotdiag
image: dotdiag
stdin_open: true # docker run -i, so that it runs
tty: true # docker run -t, so that it runs
volumes:
- ./dotnet-tmp:/tmp # map to the same directory, to make IPC socket connection
pid: "service:execution" # make pid namespaces are shared - processes are visible
depends_on:
- execution # make the dependency explicit

+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/evm.html b/docs/monitoring/metrics-explanation/evm.html new file mode 100644 index 000000000..4e731f446 --- /dev/null +++ b/docs/monitoring/metrics-explanation/evm.html @@ -0,0 +1,17 @@ + + + + + +Evm | Nethermind Documentation + + + + + +
+

Evm

MetricDescription
nethermind_blockhash_opcodeNumber of BLOCKHASH opcodes executed.
nethermind_bn254_add_precompileNumber of BN254_ADD precompile calls.
nethermind_bn254_mul_precompileNumber of BN254_MUL precompile calls.
nethermind_bn254_pairing_precompileNumber of BN254_PAIRING precompile calls.
nethermind_callsNumber of calls to other contracts.
nethermind_createsNumber of contract create calls.
nethermind_ec_recover_precompileNumber of EC_RECOVERY precompile calls.
nethermind_empty_callsNumber of calls made to addresses without code.
nethermind_evm_exceptionsNumber of EVM exceptions thrown by contracts.
nethermind_m_copy_opcodeNumber of MCOPY opcodes executed.
nethermind_mod_exp_opcodeNumber of MODEXP precompiles executed.
nethermind_mod_exp_precompileNumber of MODEXP precompile calls.
nethermind_point_evaluation_precompileNumber of Point Evaluation precompile calls.
nethermind_ripemd160_precompileNumber of RIPEMD160 precompile calls.
nethermind_self_destructsNumber of SELFDESTRUCT calls.
nethermind_sha256_precompileNumber of SHA256 precompile calls.
nethermind_sload_opcodeNumber of SLOAD opcodes executed.
nethermind_sstore_opcodeNumber of SSTORE opcodes executed.
nethermind_tload_opcodeNumber of TLOAD opcodes executed.
nethermind_tstore_opcodeNumber of TSTORE opcodes executed.
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/init.html b/docs/monitoring/metrics-explanation/init.html new file mode 100644 index 000000000..5be4c2052 --- /dev/null +++ b/docs/monitoring/metrics-explanation/init.html @@ -0,0 +1,17 @@ + + + + + +Init | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/jsonrpc.html b/docs/monitoring/metrics-explanation/jsonrpc.html new file mode 100644 index 000000000..b34f978f7 --- /dev/null +++ b/docs/monitoring/metrics-explanation/jsonrpc.html @@ -0,0 +1,17 @@ + + + + + +JsonRpc | Nethermind Documentation + + + + + +
+

JsonRpc

MetricDescription
nethermind_json_rpc_bytes_receivedNumber of JSON RPC bytes received.
nethermind_json_rpc_bytes_sentNumber of JSON RPC bytes sent.
nethermind_json_rpc_errorsNumber of JSON RPC requests processed with errors.
nethermind_json_rpc_invalid_requestsNumber of JSON RPC requests that were invalid.
nethermind_json_rpc_request_deserialization_failuresNumber of JSON RPC requests that failed JSON deserialization.
nethermind_json_rpc_requestsTotal number of JSON RPC requests received by the node.
nethermind_json_rpc_successesNumber of JSON RPC requests processed succesfully.
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/merge.plugin.html b/docs/monitoring/metrics-explanation/merge.plugin.html new file mode 100644 index 000000000..5ef81717d --- /dev/null +++ b/docs/monitoring/metrics-explanation/merge.plugin.html @@ -0,0 +1,17 @@ + + + + + +Merge.Plugin | Nethermind Documentation + + + + + +
+

Merge.Plugin

MetricDescription
nethermind_forkchoice_upded_execution_timeForkchoiceUpded request execution time
nethermind_get_payload_requestsNumber of GetPayload Requests
nethermind_new_payload_execution_timeNewPayload request execution time
nethermind_number_of_transactions_in_get_payloadNumber of Transactions included in the Last GetPayload Request
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/mev.html b/docs/monitoring/metrics-explanation/mev.html new file mode 100644 index 000000000..132ef2bd3 --- /dev/null +++ b/docs/monitoring/metrics-explanation/mev.html @@ -0,0 +1,17 @@ + + + + + +Mev | Nethermind Documentation + + + + + +
+

Mev

MetricDescription
nethermind_bundles_receivedTotal number of bundles received for inclusion
nethermind_bundles_simulatedTotal number of bundles simulated
nethermind_megabundles_receivedTotal number of megabundles received for inclusion
nethermind_total_coinbase_paymentsTotal coinbase payments in wei
nethermind_valid_bundles_receivedTotal number of valid bundles received for inclusion
nethermind_valid_megabundles_receivedTotal number of valid megabundles received for inclusion
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/network.html b/docs/monitoring/metrics-explanation/network.html new file mode 100644 index 000000000..11461a0fd --- /dev/null +++ b/docs/monitoring/metrics-explanation/network.html @@ -0,0 +1,17 @@ + + + + + +Network | Nethermind Documentation + + + + + +
+

Network

MetricDescription
nethermind_already_connected_disconnectsNumber of received disconnects due to already connected
nethermind_breach_of_protocol_disconnectsNumber of received disconnects due to breach of protocol
nethermind_client_quitting_disconnectsNumber of received disconnects due to client quitting
nethermind_disconnect_requested_disconnectsNumber of received disconnects due to disconnect requested
nethermind_eth62_block_bodies_receivedNumber of eth.62 BlockBodies messages received
nethermind_eth62_block_headers_receivedNumber of eth.62 BlockHeaders messages received
nethermind_eth62_get_block_bodies_receivedNumber of eth.62 GetBlockBodies messages received
nethermind_eth62_get_block_headers_receivedNumber of eth.62 GetBlockHeaders messages received
nethermind_eth62_new_block_hashes_receivedNumber of eth.62 NewBlockHashes messages received
nethermind_eth62_new_block_receivedNumber of eth.62 NewBlock messages received
nethermind_eth62_transactions_receivedNumber of eth.62 Transactions messages received
nethermind_eth63_get_node_data_receivedNumber of eth.63 GetNodeData messages received
nethermind_eth63_get_receipts_receivedNumber of eth.63 GetReceipts messages received
nethermind_eth63_node_data_receivedNumber of eth.63 NodeData messages received
nethermind_eth63_receipts_receivedNumber of eth.63 Receipts messages received
nethermind_eth65_get_pooled_transactions_receivedNumber of eth.65 GetPooledTransactions messages received
nethermind_eth65_get_pooled_transactions_requestedNumber of eth.65 GetPooledTransactions messages sent
nethermind_eth65_new_pooled_transaction_hashes_receivedNumber of eth.65 NewPooledTransactionHashes messages received
nethermind_eth65_new_pooled_transaction_hashes_sentNumber of eth.65 NewPooledTransactionHashes messages sent
nethermind_eth65_pooled_transactions_receivedNumber of eth.65 PooledTransactions messages received
nethermind_eth66_block_bodies_receivedNumber of eth.66 BlockBodies messages received
nethermind_eth66_block_headers_receivedNumber of eth.66 BlockHeaders messages received
nethermind_eth66_get_block_bodies_receivedNumber of eth.66 GetBlockBodies messages received
nethermind_eth66_get_block_headers_receivedNumber of eth.66 GetBlockHeaders messages received
nethermind_eth66_get_node_data_receivedNumber of eth.66 GetNodeData messages received
nethermind_eth66_get_pooled_transactions_receivedNumber of eth.66 GetPooledTransactions messages received
nethermind_eth66_get_pooled_transactions_requestedNumber of eth.66 GetPooledTransactions messages sent
nethermind_eth66_get_receipts_receivedNumber of eth.66 GetReceipts messages received
nethermind_eth66_node_data_receivedNumber of eth.66 NodeData messages received
nethermind_eth66_pooled_transactions_receivedNumber of eth.66 PooledTransactions messages received
nethermind_eth66_receipts_receivedNumber of eth.66 Receipts messages received
nethermind_eth68_new_pooled_transaction_hashes_receivedNumber of eth.68 NewPooledTransactionHashes messages received
nethermind_eth68_new_pooled_transaction_hashes_sentNumber of eth.68 NewPooledTransactionHashes messages sent
nethermind_handshakesNumber of devp2p handshakes
nethermind_handshake_timeoutsNumber of devp2p handshke timeouts
nethermind_hellos_receivedNumber of devp2p hello messages received
nethermind_hellos_sentNumber of devp2p hello messages sent
nethermind_incoming_connectionsNumber of incoming connection.
nethermind_incompatible_p2_p_disconnectsNumber of received disconnects due to incompatible devp2p version
nethermind_les_statuses_receivedNumber of les status messages received
nethermind_les_statuses_sentNumber of les status messages sent
nethermind_local_already_connected_disconnectsNumber of initiated disconnects due to already connected
nethermind_local_breach_of_protocol_disconnectsNumber of sent disconnects due to breach of protocol
nethermind_local_client_quitting_disconnectsNumber of initiated disconnects due to client quitting
nethermind_local_disconnect_requested_disconnectsNumber of initiated disconnects due to disconnect requested
nethermind_local_disconnects_totalNumber of local disconnects
nethermind_local_incompatible_p2_p_disconnectsNumber of initiated disconnects due to incompatible devp2p
nethermind_local_null_node_identity_disconnectsNumber of initiated disconnects due to missing node identity
nethermind_local_other_disconnectsNumber of initiated disconnects due to other reason
nethermind_local_receive_message_timeout_disconnectsNumber of initiated disconnects due to request timeout
nethermind_local_same_as_self_disconnectsNumber of initiated disconnects due to connection to self
nethermind_local_tcp_subsystem_error_disconnectsNumber of initiated disconnects due to TCP error
nethermind_local_too_many_peers_disconnectsNumber of initiated disconnects due to breach of protocol
nethermind_local_unexpected_identity_disconnectsNumber of initiated disconnects due to node identity info mismatch
nethermind_local_useless_peer_disconnectsNumber of sent disconnects due to useless peer
nethermind_null_node_identity_disconnectsNumber of received disconnects due to missing peer identity
nethermind_other_disconnectsNumber of received disconnects due to other reasons
nethermind_outgoing_connectionsNumber of outgoing connection.
nethermind_peer_limitThe maximum number of peers this node allows to connect.
nethermind_receive_message_timeout_disconnectsNumber of received disconnects due to request timeouts
nethermind_remote_disconnects_totalNumber of remote disconnects
nethermind_same_as_self_disconnectsNumber of received disconnects due to connecting to self
nethermind_snap_account_range_receivedNumber of SNAP AccountRange messages received
nethermind_snap_byte_codes_receivedNumber of SNAP ByteCodes messages received
nethermind_snap_get_account_range_receivedNumber of SNAP GetAccountRange messages received
nethermind_snap_get_account_range_sentNumber of SNAP GetAccountRange messages sent
nethermind_snap_get_byte_codes_receivedNumber of SNAP GetByteCodes messages received
nethermind_snap_get_byte_codes_sentNumber of SNAP GetByteCodes messages sent
nethermind_snap_get_storage_ranges_receivedNumber of SNAP GetStorageRanges messages received
nethermind_snap_get_storage_ranges_sentNumber of SNAP GetStorageRanges messages sent
nethermind_snap_get_trie_nodes_receivedNumber of SNAP GetTrieNodes messages received
nethermind_snap_get_trie_nodes_sentNumber of SNAP GetTrieNodes messages sent
nethermind_snap_storage_ranges_receivedNumber of SNAP StorageRanges messages received
nethermind_snap_trie_nodes_receivedNumber of SNAP TrieNodes messages received
nethermind_statuses_receivedNumber of eth status messages received
nethermind_statuses_sentNumber of eth status messages sent
nethermind_tcp_subsystem_error_disconnectsNumber of disconnects due to TCP error
nethermind_too_many_peers_disconnectsNumber of received disconnects due to too many peers
nethermind_unexpected_identity_disconnectsNumber of received disconnects due to peer identity information mismatch
nethermind_useless_peer_disconnectsNumber of received disconnects due to useless peer
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/runner.html b/docs/monitoring/metrics-explanation/runner.html new file mode 100644 index 000000000..d17bfdefa --- /dev/null +++ b/docs/monitoring/metrics-explanation/runner.html @@ -0,0 +1,17 @@ + + + + + +Runner module | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture.html b/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture.html new file mode 100644 index 000000000..2d483aeaa --- /dev/null +++ b/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastracture.html @@ -0,0 +1,24 @@ + + + + + +Setting up local Metrics infrastructure | Nethermind Documentation + + + + + +
+

Setting up local Metrics infrastructure

Metrics Configuration

Nethermind metrics can be consumed by Prometheus/Grafana if configured +in Metrics configuration category.

Metrics infrastructure

Enabling Metrics in Nethermind

Metrics can be enabled by simply passing --Metrics.Enabled true argument to the Docker containers,Nethermind.Runner +or Nethermind.Launcher e.g. ./Nethermind.Runner --Metrics.Enabled true.

Metrics.PushGatewayUrl will need to be amended if pushgateway endpoint is not default.

Running sample configuration

git clone https://github.com/NethermindEth/metrics-infrastructure.git
  1. go to metrics-infrastructure directory
cd metrics-explanation-infrastructure
  1. run docker stack
docker-compose up -d
  1. run the Nethermind node with Metrics enabled and you should see metrics inflowing on +Pushgateway url
info

You can add nethermind service to the docker-compose.yml file so that it runs with the whole stack

nethermind:
image: nethermind/nethermind
container_name: nethermind
restart: unless-stopped
command: '--config goerli --Metrics.Enabled true'
network_mode: host
volumes:
- ./nethermind_db/:/nethermind/nethermind_db/
- ./keystore/:/nethermind/keystore/
- ./logs/:/nethermind/logs/

{% tabs %} +{% tab title="Runner" %}

./Nethermind.Runner --Metrics.Enabled true

{% endtab %}

{% tab title="Launcher" %}

./Nethermind.Launcher --Metrics.Enabled true

{% endtab %}

{% tab title="Docker" %}

docker run -it --network host nethermind/nethermind:alpine --Metrics.Enabled

{% endtab %} +{% endtabs %}

http://localhost:9091/

  1. open Grafana url and login with default login (admin) and password (admin), skip +password change if you want

  • you can now explore metrics and monitor your Nethermind node

Prometheus, Pushgateway and Grafana sources

{% embed url="https://github.com/prometheus/prometheus" caption="Prometheus GitHub" %}

{% embed url="https://github.com/prometheus/pushgateway" caption="Pushgateway GitHub" %}

{% embed url="https://github.com/grafana/grafana" caption="Grafana GitHub" %}

+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/store.html b/docs/monitoring/metrics-explanation/store.html new file mode 100644 index 000000000..0372b306f --- /dev/null +++ b/docs/monitoring/metrics-explanation/store.html @@ -0,0 +1,17 @@ + + + + + +Store module | Nethermind Documentation + + + + + +
+

Store module

Metric NameDescription
BlockInfosDbReadsNumber of Block Infos DB reads.
BlockInfosDbWritesNumber of Block Infos DB writes.
BlocksDbReadsNumber of Blocks DB reads.
BlocksDbWritesNumber of Blocks DB writes.
BloomDbReadsNumber of Bloom DB reads.
BloomDbWritesNumber of Bloom DB writes.
CHTDbReadsNumber of CHT DB reads.
CHTDbWritesNumber of CHT DB writes.
CodeDbReadsNumber of Code DB reads.
CodeDbWritesNumber of Code DB writes.
HeaderDbReadsNumber of Headers DB reads.
HeaderDbWritesNumber of Headers DB writes.
OtherDbReadsNumber of other DB reads.
OtherDbWritesNumber of other DB writes.
PendingTxsDbReadsNumber of Pending Tx DB reads.
PendingTxsDbWritesNumber of Pending Tx DB writes.
ReceiptsDbReadsNumber of Receipts DB reads.
ReceiptsDbWritesNumber of Receipts DB writes.
StateDbReadsNumber of State DB reads.
StateDbWritesNumber of State DB writes.
StateTreeReadsNumber of State Trie reads.
StateTreeWritesNumber of Blocks Trie writes.
StorageTreeReadsNumber of storge trie reads.
StorageTreeWritesNumber of storage trie writes.
WitnessDbReadsNumber of Witness DB reads.
WitnessDbWritesNumber of Witness DB writes.
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/trie.html b/docs/monitoring/metrics-explanation/trie.html new file mode 100644 index 000000000..3db5379e1 --- /dev/null +++ b/docs/monitoring/metrics-explanation/trie.html @@ -0,0 +1,17 @@ + + + + + +Trie | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/trie.pruning.html b/docs/monitoring/metrics-explanation/trie.pruning.html new file mode 100644 index 000000000..56b195e83 --- /dev/null +++ b/docs/monitoring/metrics-explanation/trie.pruning.html @@ -0,0 +1,17 @@ + + + + + +Trie.Pruning | Nethermind Documentation + + + + + +
+

Trie.Pruning

MetricDescription
nethermind_cached_nodes_countNodes that are currently kept in cache (either persisted or not)
nethermind_committed_nodes_countNodes that have been committed since the session start. These nodes may have been pruned, persisted or replaced.
nethermind_deep_pruned_persisted_nodes_countNodes that have been removed from the cache during deep pruning because they have been persisted before.
nethermind_deep_pruning_timeTime taken by the last deep pruning.
nethermind_last_persisted_block_numberLast persisted block number (snapshot).
nethermind_loaded_from_cache_nodes_countNumber of reads from the node cache.
nethermind_loaded_from_db_nodes_countNumber of DB reads.
nethermind_loaded_from_rlp_cache_nodes_countNumber of reads from the RLP cache.
nethermind_memory_used_by_cacheEstimated memory used by cache.
nethermind_persisted_node_countNodes that have been persisted since the session start.
nethermind_pruned_persisted_nodes_countNodes that have been removed from the cache during pruning because they have been persisted before.
nethermind_pruned_transient_nodes_countNodes that have been removed from the cache during pruning because they were no longer needed.
nethermind_pruning_timeTime taken by the last pruning.
nethermind_replaced_nodes_countNumber of nodes that have been exactly the same as other nodes in the cache when committing.
nethermind_snapshot_persistence_timeTime taken by the last snapshot persistence.
+ + + + \ No newline at end of file diff --git a/docs/monitoring/metrics-explanation/txpool.html b/docs/monitoring/metrics-explanation/txpool.html new file mode 100644 index 000000000..0ee3a8b50 --- /dev/null +++ b/docs/monitoring/metrics-explanation/txpool.html @@ -0,0 +1,17 @@ + + + + + +TxPool | Nethermind Documentation + + + + + +
+

TxPool

MetricDescription
nethermind_dark_pool_ratio_level1Ratio of transactions in the block absent in hashCache.
nethermind_dark_pool_ratio_level2Ratio of transactions in the block absent in pending transactions.
nethermind_eip1559_transactions_ratioRatio of 1559-type transactions in the block.
nethermind_pending1559_transactions_addedNumber of pending 1559-type transactions added to transaction pool.
nethermind_pending_transactions_addedNumber of pending transactions added to transaction pool.
nethermind_pending_transactions_balance_below_valueNumber of pending transactions received that were ignored because balance is less than txn value.
nethermind_pending_transactions_discardedNumber of pending transactions received that were ignored.
nethermind_pending_transactions_evictedNumber of pending transactions evicted from transaction pool.
nethermind_pending_transactions_gas_limit_too_highNumber of pending transactions received that were ignored because the gas limit was to high for the block.
nethermind_pending_transactions_hashes_sentNumber of hashes of pending transactions broadcasted to peers.
nethermind_pending_transactions_knownNumber of already known pending transactions.
nethermind_pending_transactions_low_nonceNumber of transactions with already used nonce.
nethermind_pending_transactions_malformedNumber of malformed transactions.
nethermind_pending_transactions_nonce_gapNumber of pending transactions received that were ignored because of not having preceding nonce of this sender in TxPool.
nethermind_pending_transactions_passed_filters_but_cannot_compete_on_feesNumber of pending transactions received that were ignored after passing early rejections as balance is too low to compete with lowest effective fee in transaction pool.
nethermind_pending_transactions_receivedNumber of pending transactions received from peers.
nethermind_pending_transactions_sentNumber of pending transactions broadcasted to peers.
nethermind_pending_transactions_too_low_balanceNumber of pending transactions received that were ignored because balance too low for fee to be higher than the lowest fee in transaction pool.
nethermind_pending_transactions_too_low_feeNumber of pending transactions received that were ignored because of fee lower than the lowest fee in transaction pool.
nethermind_pending_transactions_unresolvable_senderNumber of pending transactions received that were ignored because the sender couldn't be resolved.
nethermind_pending_transactions_with_expensive_filteringNumber of pending transactions that reached filters which are resource expensive
nethermind_pending_transactions_zero_balanceNumber of pending transactions received that were ignored because balance is zero and cannot pay gas.
nethermind_transaction_countNumber of transactions in pool.
+ + + + \ No newline at end of file diff --git a/docs/monitoring/monitoring-node-health.html b/docs/monitoring/monitoring-node-health.html new file mode 100644 index 000000000..628a005c2 --- /dev/null +++ b/docs/monitoring/monitoring-node-health.html @@ -0,0 +1,41 @@ + + + + + +Monitoring Node's Health | Nethermind Documentation + + + + + +
+

Monitoring Node's Health

Nethermind has a pre-packed Nethermind.HealthChecks.dll plugin that allows you to monitor your Nethermind node better. +It leverages the power +of AspNetCore.Diagnostics.HealthChecks. It simply adds +an/healthendpoint to the JSON RPC service which can be used to check the Nethermind's liveness - verify if the +node is synced and has at least one peer. Useful when you don't want to query the node before it's able to +provide you data available only for fully synced nodes like eth_getBalance.

The Nethermind.HealthChecks.dllplugin will be automatically loaded on Nethermind start.

Enabling and configuring Health Checks

The health checks need to be additionally enabled which can be done either through --HealthChecks.* flags or by adding +a "HealthChecks" section to the config file.

HealthChecks config section example
  "HealthChecks": {
"Enabled": true,
"WebhooksEnabled": true,
"WebhooksUri": "https://slack.webhook",
"UIEnabled": true,
"PollingInterval": 10,
"Slug": "/api/health"
}
danger

JSON RPC Service needs to be enabled in order for health checks to work --JsonRpc.Enabled true

Each configuration option is described here.

Enabling Health Checks without UI

./Nethermind.Runner --HealthChecks.Enabled true

The health endpoint is now available at localhost:8545/health by default (if your --JsonRpc.Port is 8545). +The health endpoint can be configured via --HealthChecks.Slug parameter e.g. --HealthChecks.Slug /api/health. We +can if it is working with curl:

// Request
curl localhost:8545/health

// Example of response for Unhealthy node
{"status":"Unhealthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node has 0 peers connected","duration":"00:00:00.0003881","status":"Unhealthy","tags":[]}}}

// Example of response for Healthy node
{"status":"Healthy","totalDuration":"00:00:00.0015582","entries":{"node-health":{"data":{},"description":"The node is now fully synced with a network, number of peers: 99","duration":"00:00:00.0003881","status":"Healthy","tags":[]}}}
info
  • Unhealthy returns 503 (Service Unavailable) status code
info
  • Healthy returns 200 status code

Enabling Health Checks UI

./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true

Enabling UI will expose an additional endpoint /healthchecks-uiand will allow seeing node's health on a nice UI. To +view the UI simply go to http://localhost:8545/healthchecks-ui.

Unhealthy status reported on UI page

Enabling Slack reports

We may also add Slack Webhook endpoint to which our node's health will be reported. We need to pass +the --HealthChecks.WebhooksEnabled true and add the --HealthChecks.WebhooksUri which can be found in your Slack app +configuration.

./Nethermind.Runner --HealthChecks.Enabled true --HealthChecks.UIEnabled true --HealthChecks.WebhooksEnabled true --HealthChecks.WebhooksUri https://hooks.slack.com/

If your node will be Unhealthy you should receive a message similar to this:

Unhealthy

with description of why the node is unhealthy, node's name and information about the machine on which the node is +running.\ +When it becomes Healthy (synced and with peers) you should receive:

Healthy

Consensus Client health

This check verifies if the client receives messages from the CL. If you see this warning in your logs, it means that +there is something wrong with CL<->Nethermind communication. Check more about setting up Nethermind and +CL here.

No incoming messages from Consensus Client. Consensus Client is required to sync the node. Please make sure that it's working properly.
caution

Note that Consensus Client is required for normal node operations.

health_nodeStatus

Health checks via JSON RPC requests were introduced in version v.1.10.18. For that, HealthChecks.Enabled should be +set to true.

{ "jsonrpc":"2.0","method":"health_nodeStatus","params":[],"id":67 }

Monitoring available storage space

Feature which is helping to track free disk space is enabled by default and monitors a drive which has been used to +configure database location. There are two new configuration options available:

  • --HealthChecks.LowStorageSpaceWarningThreshold - Percentage of free disk space below which a warning will be +displayed. If Health Checks UI is enabled, it will also be reported under node's health. Default value is 5 - meaning +5% of free disk space.
  • --HealthChecks.LowStorageSpaceShutdownThreshold - Percentage of available disk space below which node will shutdown +to avoid database corruption. Default value is 1 - meaning 1% of free disk space.
./Nethermind.Runner --HealthChecks.LowStorageSpaceWarningThreshold 5 --HealthChecks.LowStorageSpaceShutdownThreshold 1

HealthChecks for producing and processing blocks

There are two fields for HealthChecks config: MaxIntervalWithoutProcessedBlock and MaxIntervalWithoutProducedBlock. The +node will return unhealthy status if the interval elapsed without processing or producing a block. Let's use the below +config as an example. If the node doesn't process a block for 15 seconds, we will return unhealthy status. Analogically, +we will be waiting 45 seconds for a newly produced block.

HealthChecks config section example

"HealthChecks": {
"Enabled": true,
"WebhooksEnabled": true,
"UIEnabled": true,
"Slug": "/api/health",
"MaxIntervalWithoutProcessedBlock ": 15,
"MaxIntervalWithoutProducedBlock": 45
}

If those fields are not set in a config, application will try to use them based on seal engine specification. If there +is infinite time, unhealthy status can still be reported if processing or producing threads stopped.

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli.html b/docs/nethermind-utilities/cli.html new file mode 100644 index 000000000..b091ca6e6 --- /dev/null +++ b/docs/nethermind-utilities/cli.html @@ -0,0 +1,21 @@ + + + + + +CLI | Nethermind Documentation + + + + + +
+

CLI

After launching ./Nethermind.Launcher you have two options - Ethereum Node and CLI.

If you launch the Node in one process and then launch the CLI in another process you will see available commands inside +the CLI.

caution

You have to ensure that the JsonRpc.Enabled is set to true either by enabling it when Launcher asks about it or by +manually editing the relevant config file or by passing --JsonRpc.Enabled true parameter after the Launcher command

CLI will display available options (functions and properties) when started.

CLI will allow you to query the most basic info about the node quickly.

  1. You can execute javascript arithmetics
  2. You can issue JSON RPC requests to the node
  3. You can combine the former two
  4. You can create and call functions
  5. You can retrieve node objects
  6. And work with node object properties
  7. You can also load javascript files from disk by calling load("filepath.js")
  8. You can navigate to previous commands by using arrow keys
  9. You can auto-complete basic command with tab

For more advanced operations with the node use Web3 or ether.js +libs or Truffle, Metamask, etc.

Below you will find the available list of CLI operations and you can find more information about each call in JSON RPC +section.

{% page-ref page="../../ethereum-client/json-rpc/" %}

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/admin.html b/docs/nethermind-utilities/cli/admin.html new file mode 100644 index 000000000..f157abb81 --- /dev/null +++ b/docs/nethermind-utilities/cli/admin.html @@ -0,0 +1,18 @@ + + + + + +admin | Nethermind Documentation + + + + + +
+

admin

admin.addPeer

Adds given node.

Invocation
admin.addPeer(enode, addToStaticNodes)
ParameterTypeDescription
enodeStringGiven node
addToStaticNodesBooleanAdding to static nodes if true (optional)
Returned typeDescription
StringAdded node
admin.addPeer("enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303", true)

See also JSON RPC admin_addPeer

admin.nodeInfo

Displays relevant information about this node.

Invocation
admin.nodeInfo
This method doesn't have parameters.
Returned typeDescription
NodeInfo objectInformation about this node
admin.nodeInfo

See also JSON RPC admin_nodeInfo

admin.peers

Displays a list of connected peers including information about +them (clientId, host, port, address, isBootnode, isStatic, enode).

Invocation
admin.peers(includeDetails)
ParameterTypeDescription
includeDetailsBooleanIf true, including clientType, ethDetails and lastSignal (optional)
Returned typeDescription
PeerInfo objectList of connected peers including information
admin.peers(true)

See also JSON RPC admin_peers

admin.removePeer

Removes given node.

Invocation
admin.removePeer(enode, removeFromStaticNodes)
ParameterTypeDescription
enodeStringGiven node
removeFromStaticNodesBooleanRemoving from static nodes if true (optional)
Returned typeDescription
StringRemoved node
admin.removePeer("enode://deed356ddcaa1eb33a859b818a134765fff2a3dd5cd5b3d6cbe08c9424dca53b947bdc1c64e6f1257e29bb2960ac0a4fb56e307f360b7f8d4ddf48024cdb9d68@85.221.141.144:30303", true)

See also JSON RPC admin_removePeer

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/clique.html b/docs/nethermind-utilities/cli/clique.html new file mode 100644 index 000000000..37c669c80 --- /dev/null +++ b/docs/nethermind-utilities/cli/clique.html @@ -0,0 +1,20 @@ + + + + + +clique | Nethermind Documentation + + + + + +
+

clique

clique.discard

This method drops a currently running proposal. The signer will not cast further votes (either for or against) the +address.

Invocation
clique.discard(signer)
ParameterTypeDescription
signerAddress
Returned typeDescription
Boolean
Example request of clique.discard
clique.discard(signer)

See also JSON RPC clique_discard

clique.getBlockSigner

Retrieves the signer of the block with the given hash. Returns error of a block with the given hash does not exist.

Invocation
clique.getBlockSigner(hash)
ParameterTypeDescription
hashHash
Returned typeDescription
Address
Example request of clique.getBlockSigner
clique.getBlockSigner(hash)

See also JSON RPC clique_getBlockSigner

clique.getSigners

Retrieves the list of authorized signers.

Invocation
clique.getSigners()
This method doesn't have parameters.
Returned typeDescription
Address
Example request of clique.getSigners
clique.getSigners()

See also JSON RPC clique_getSigners

clique.getSignersAnnotated

Retrieves the list of authorized signers but with signer names instead of addresses

Invocation
clique.getSignersAnnotated()
This method doesn't have parameters.
Returned typeDescription
String
Example request of clique.getSignersAnnotated
clique.getSignersAnnotated()

See also JSON RPC clique_getSignersAnnotated

clique.getSignersAtHash

Retrieves the list of authorized signers at the specified block by hash.

Invocation
clique.getSignersAtHash(hash)
ParameterTypeDescription
hashHash
Returned typeDescription
Address
Example request of clique.getSignersAtHash
clique.getSignersAtHash(hash)

See also JSON RPC clique_getSignersAtHash

clique.getSignersAtHashAnnotated

Retrieves the list of authorized signers at the specified block by hash but with signer names instead of addresses

Invocation
clique.getSignersAtHashAnnotated(hash)
ParameterTypeDescription
hashHash
Returned typeDescription
String
Example request of clique.getSignersAtHashAnnotated
clique.getSignersAtHashAnnotated(hash)

See also JSON RPC clique_getSignersAtHashAnnotated

clique.getSignersAtNumber

Retrieves the list of authorized signers at the specified block by block number.

Invocation
clique.getSignersAtNumber(number)
ParameterTypeDescription
numberQuantity
Returned typeDescription
Address
Example request of clique.getSignersAtNumber
clique.getSignersAtNumber(number)

See also JSON RPC clique_getSignersAtNumber

clique.getSnapshot

Retrieves a snapshot of all clique state at a given block.

Invocation
clique.getSnapshot()
This method doesn't have parameters.
Returned typeDescription
Snapshot object
clique.getSnapshot()

See also JSON RPC clique_getSnapshot

clique.getSnapshotAtHash

Retrieves the state snapshot at a given block.

Invocation
clique.getSnapshotAtHash(hash)
ParameterTypeDescription
hashHash
Returned typeDescription
Snapshot object
clique.getSnapshotAtHash(hash)

See also JSON RPC clique_getSnapshotAtHash

clique.produceBlock

Forces Clique block producer to produce a new block

Invocation
clique.produceBlock(parentHash)
ParameterTypeDescription
parentHashHash
Returned typeDescription
Boolean
Example request of clique.produceBlock
clique.produceBlock(parentHash)

See also JSON RPC clique_produceBlock

clique.propose

Adds a new authorization proposal that the signer will attempt to push through. If the vote parameter is true, the +local signer votes for the given address to be included in the set of authorized signers. With vote set to false, the +signer is against the address.

Invocation
clique.propose(signer, vote)
ParameterTypeDescription
signerAddress
voteBoolean
Returned typeDescription
Boolean
Example request of clique.propose
clique.propose(signer, vote)

See also JSON RPC clique_propose

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/debug.html b/docs/nethermind-utilities/cli/debug.html new file mode 100644 index 000000000..e0c32e2ff --- /dev/null +++ b/docs/nethermind-utilities/cli/debug.html @@ -0,0 +1,22 @@ + + + + + +debug | Nethermind Documentation + + + + + +
+

debug

debug.config

Invocation
debug.config(category, name)
ParameterTypeDescription
categoryString
nameString
Returned typeDescription
String
Example request of debug.config
debug.config(category, name)

debug.getBlockRlp

Retrieves a block in the RLP-serialized form.

Invocation
debug.getBlockRlp(number)
ParameterTypeDescription
numberQuantity
Returned typeDescription
Data
Example request of debug.getBlockRlp
debug.getBlockRlp(number)

See also JSON RPC debug_getBlockRlp

debug.getBlockRlpByHash

Retrieves a block in the RLP-serialized form.

Invocation
debug.getBlockRlpByHash(hash)
ParameterTypeDescription
hashHash
Returned typeDescription
Data
Example request of debug.getBlockRlpByHash
debug.getBlockRlpByHash(hash)

See also JSON RPC debug_getBlockRlpByHash

debug.getChainLevel

Retrieves a representation of tree branches on a given chain level (Nethermind specific).

Invocation
debug.getChainLevel(number)
ParameterTypeDescription
numberQuantity
Returned typeDescription
ChainLevelForRpc object
debug.getChainLevel(number)

See also JSON RPC debug_getChainLevel

debug.migrateReceipts

Sets the block number up to which receipts will be migrated to (Nethermind specific).

Invocation
debug.migrateReceipts(blockNumber)
ParameterTypeDescription
blockNumberQuantity
Returned typeDescription
Boolean
Example request of debug.migrateReceipts
debug.migrateReceipts(blockNumber)

See also JSON RPC debug_migrateReceipts

debug.traceBlock

Returns the full stack trace of all invoked opcodes of all transactions that were included in the block specified. The +parent of the block must be present or it will fail.

Invocation
debug.traceBlock(blockRlp, options)
ParameterTypeDescription
blockRlpData
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
debug.traceBlock(blockRlp, options)

See also JSON RPC debug_traceBlock

debug.traceBlockByHash

Similar to debug_traceBlock, this method accepts a block hash and replays the block that is already present in the +database.

Invocation
debug.traceBlockByHash(blockHash, options)
ParameterTypeDescription
blockHashHash
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
debug.traceBlockByHash(blockHash, options)

See also JSON RPC debug_traceBlockByHash

debug.traceBlockByNumber

Similar to debug_traceBlock, this method accepts a block number as well as "latest" or "finalized" and replays the block +that is already present in the database.

Invocation
debug.traceBlockByNumber(blockParameter, options)
ParameterTypeDescription
blockParameterBlockParameter object
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
debug.traceBlockByNumber(blockParameter, options)

See also JSON RPC debug_traceBlockByNumber

debug.traceTransaction

This method will attempt to run the transaction in the exact same manner as it was executed on the network. It will +replay any transaction that may have been executed prior to this one before it will finally attempt to execute the +transaction that corresponds to the given hash.

Invocation
debug.traceTransaction(transactionHash, options)
ParameterTypeDescription
transactionHashHash
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
debug.traceTransaction(transactionHash, options)

See also JSON RPC debug_traceTransaction

debug.traceTransactionByBlockAndIndex

Invocation
debug.traceTransactionByBlockAndIndex(blockParameter, txIndex, options)
ParameterTypeDescription
blockParameterBlockParameter object
txIndexQuantity
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
debug.traceTransactionByBlockAndIndex(blockParameter, txIndex, options)

See also JSON RPC debug_traceTransactionByBlockAndIndex

debug.traceTransactionByBlockhashAndIndex

Invocation
debug.traceTransactionByBlockhashAndIndex(blockHash, txIndex, options)
ParameterTypeDescription
blockHashHash
txIndexQuantity
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
debug.traceTransactionByBlockhashAndIndex(blockHash, txIndex, options)

See also JSON RPC debug_traceTransactionByBlockhashAndIndex

debug.traceTransactionInBlockByHash

Invocation
debug.traceTransactionInBlockByHash(blockRlp, transactionHash, options)
ParameterTypeDescription
blockRlpData
transactionHashHash
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
debug.traceTransactionInBlockByHash(blockRlp, transactionHash, options)

See also JSON RPC debug_traceTransactionInBlockByHash

debug.traceTransactionInBlockByIndex

Invocation
debug.traceTransactionInBlockByIndex(blockRlp, txIndex, options)
ParameterTypeDescription
blockRlpData
txIndexQuantity
optionsGethTraceOptions object
Returned typeDescription
GethLikeTxTrace object
debug.traceTransactionInBlockByIndex(blockRlp, txIndex, options)

See also JSON RPC debug_traceTransactionInBlockByIndex

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/diag.html b/docs/nethermind-utilities/cli/diag.html new file mode 100644 index 000000000..cd3d61c98 --- /dev/null +++ b/docs/nethermind-utilities/cli/diag.html @@ -0,0 +1,17 @@ + + + + + +diag | Nethermind Documentation + + + + + +
+

diag

diag.cliVersion

Displays client version

Invocation
diag.cliVersion
This method doesn't have parameters.
Returned typeDescription
JavaScript ObjectClient version
diag.cliVersion
+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/eth.html b/docs/nethermind-utilities/cli/eth.html new file mode 100644 index 000000000..271fd91da --- /dev/null +++ b/docs/nethermind-utilities/cli/eth.html @@ -0,0 +1,18 @@ + + + + + +eth | Nethermind Documentation + + + + + +
+

eth

eth.blockNumber

Returns current block number

Invocation
eth.blockNumber
This method doesn't have parameters.
Returned typeDescription
Quantity
eth.blockNumber

See also JSON RPC eth_blockNumber

eth.call

Executes a tx call (does not create a transaction)

Invocation
eth.call(transactionCall, blockParameter)
ParameterTypeDescription
transactionCallTransactionForRpc object
blockParameterBlockParameter object
Returned typeDescription
String
eth.call(transactionCall, blockParameter)

See also JSON RPC eth_call

eth.chainId

Returns ChainID

Invocation
eth.chainId
This method doesn't have parameters.
Returned typeDescription
Quantity
eth.chainId

See also JSON RPC eth_chainId

eth.createAccessList

Creates an EIP2930 type AccessList for the given transaction

info

Hint: If your transaction has code executed, then you can generate transaction access list with +eth_createAccessList. If you send it with your transaction then it will lower your gas cost on Ethereum

Invocation
eth.createAccessList(transactionCall, blockParameter, optimize)
ParameterTypeDescription
transactionCallTransactionForRpc objectTransaction's details
blockParameterBlockParameter object(optional)
optimizeBoolean(optional)
Returned typeDescription
AccessListForRpc object
eth.createAccessList(transactionCall, blockParameter, optimize)

See also JSON RPC eth_createAccessList

eth.estimateGas

Executes a tx call and returns gas used (does not create a transaction)

Invocation
eth.estimateGas(transactionCall, blockParameter)
ParameterTypeDescription
transactionCallTransactionForRpc object
blockParameterBlockParameter object
Returned typeDescription
Quantity
eth.estimateGas(transactionCall, blockParameter)

See also JSON RPC eth_estimateGas

eth.feeHistory

Returns block fee history.

Invocation
eth.feeHistory(blockCount, newestBlock, rewardPercentiles)
ParameterTypeDescription
blockCountQuantity
newestBlockBlockParameter object
rewardPercentilesDouble[] object
Returned typeDescription
FeeHistoryResults object
eth.feeHistory(blockCount, newestBlock, rewardPercentiles)

See also JSON RPC eth_feeHistory

eth.getAccount

Retrieves Accounts via Address and Blocknumber

Invocation
eth.getAccount(accountAddress, blockParameter)
ParameterTypeDescription
accountAddressAddress
blockParameterBlockParameter object
Returned typeDescription
AccountForRpc object
eth.getAccount(accountAddress, blockParameter)

See also JSON RPC eth_getAccount

eth.getBalance

Returns account balance

Invocation
eth.getBalance(address, blockParameter)
ParameterTypeDescription
addressAddress
blockParameterBlockParameter object
Returned typeDescription
Quantity
eth.getBalance(address, blockParameter)

See also JSON RPC eth_getBalance

eth.getBlockByHash

Retrieves a block by hash

Invocation
eth.getBlockByHash(blockHash, returnFullTransactionObjects)
ParameterTypeDescription
blockHashHash
returnFullTransactionObjectsBoolean
Returned typeDescription
BlockForRpc object
eth.getBlockByHash(blockHash, returnFullTransactionObjects)

See also JSON RPC eth_getBlockByHash

eth.getBlockByNumber

Retrieves a block by number

Invocation
eth.getBlockByNumber(blockParameter, returnFullTransactionObjects)
ParameterTypeDescription
blockParameterBlockParameter object
returnFullTransactionObjectsBoolean
Returned typeDescription
BlockForRpc object
eth.getBlockByNumber(blockParameter, returnFullTransactionObjects)

See also JSON RPC eth_getBlockByNumber

eth.getBlockTransactionCountByHash

Returns number of transactions in the block block hash

Invocation
eth.getBlockTransactionCountByHash(blockHash)
ParameterTypeDescription
blockHashHash
Returned typeDescription
Quantity
eth.getBlockTransactionCountByHash(["0x199c2ef63392fb67f929fe0580e11f62fa6c54b9951a624896da91375a6805b1"])

See also JSON RPC eth_getBlockTransactionCountByHash

eth.getBlockTransactionCountByNumber

Returns number of transactions in the block by block number

Invocation
eth.getBlockTransactionCountByNumber(blockParameter)
ParameterTypeDescription
blockParameterBlockParameter object
Returned typeDescription
Quantity
eth.getBlockTransactionCountByNumber(["8934677"])

See also JSON RPC eth_getBlockTransactionCountByNumber

eth.getCode

Returns account code at given address and block

Invocation
eth.getCode(address, blockParameter)
ParameterTypeDescription
addressAddress
blockParameterBlockParameter object
Returned typeDescription
Data
eth.getCode(address, blockParameter)

See also JSON RPC eth_getCode

eth.getFilterChanges

Reads filter changes

Invocation
eth.getFilterChanges(filterId)
ParameterTypeDescription
filterIdQuantity
Returned typeDescription
Array
eth.getFilterChanges(["0x9"])

See also JSON RPC eth_getFilterChanges

eth.getLogs

Reads logs

Invocation
eth.getLogs(filter)
ParameterTypeDescription
filterFilter object
Returned typeDescription
Array
eth.getLogs(filter)

See also JSON RPC eth_getLogs

eth.getProof

https://github.com/ethereum/EIPs/issues/1186

Invocation
eth.getProof(accountAddress, hashRate, blockParameter)
ParameterTypeDescription
accountAddressAddress
hashRateArray
blockParameterBlockParameter object
Returned typeDescription
AccountProof object
eth.getProof(accountAddress, hashRate, blockParameter)

See also JSON RPC eth_getProof

eth.getStorageAt

Returns storage data at address. storage_index

Invocation
eth.getStorageAt(address, positionIndex, blockParameter)
ParameterTypeDescription
addressAddress
positionIndexQuantity
blockParameterBlockParameter object
Returned typeDescription
Data
eth.getStorageAt(address, positionIndex, blockParameter)

See also JSON RPC eth_getStorageAt

eth.getTransactionByBlockNumberAndIndex

Retrieves a transaction by block number and index

Invocation
eth.getTransactionByBlockNumberAndIndex(blockParameter, positionIndex)
ParameterTypeDescription
blockParameterBlockParameter object
positionIndexQuantity
Returned typeDescription
TransactionForRpc object
eth.getTransactionByBlockNumberAndIndex(blockParameter, positionIndex)

See also JSON RPC eth_getTransactionByBlockNumberAndIndex

eth.getTransactionByHash

Retrieves a transaction by hash

Invocation
eth.getTransactionByHash(transactionHash)
ParameterTypeDescription
transactionHashHash
Returned typeDescription
TransactionForRpc object
eth.getTransactionByHash("0xabca23910646013d608ec671de099447ab60b2b7159ad8319c3c088e8d9ea0fa")

See also JSON RPC eth_getTransactionByHash

eth.getTransactionCount

Returns account nonce (number of trnsactions from the account since genesis) at the given block number

Invocation
eth.getTransactionCount(address, blockParameter)
ParameterTypeDescription
addressAddress
blockParameterBlockParameter object
Returned typeDescription
Quantity
eth.getTransactionCount(address, blockParameter)

See also JSON RPC eth_getTransactionCount

eth.getTransactionReceipt

Retrieves a transaction receipt by tx hash

Invocation
eth.getTransactionReceipt(txHashData)
ParameterTypeDescription
txHashDataHash
Returned typeDescription
ReceiptForRpc object
eth.getTransactionReceipt(["0x80757153e93d1b475e203406727b62a501187f63e23b8fa999279e219ee3be71"])

See also JSON RPC eth_getTransactionReceipt

eth.getUncleByBlockHashAndIndex

Retrieves an uncle block header by block hash and uncle index

Invocation
eth.getUncleByBlockHashAndIndex(blockHashData, positionIndex)
ParameterTypeDescription
blockHashDataHash
positionIndexQuantity
Returned typeDescription
BlockForRpc object
eth.getUncleByBlockHashAndIndex(blockHashData, positionIndex)

See also JSON RPC eth_getUncleByBlockHashAndIndex

eth.getUncleByBlockNumberAndIndex

Retrieves an uncle block header by block number and uncle index

Invocation
eth.getUncleByBlockNumberAndIndex(blockParameter, positionIndex)
ParameterTypeDescription
blockParameterBlockParameter object
positionIndexQuantity
Returned typeDescription
BlockForRpc object
eth.getUncleByBlockNumberAndIndex(blockParameter, positionIndex)

See also JSON RPC eth_getUncleByBlockNumberAndIndex

eth.getUncleCountByBlockNumber

Returns number of uncles in the block by block number

Invocation
eth.getUncleCountByBlockNumber(blockParameter)
ParameterTypeDescription
blockParameterBlockParameter object
Returned typeDescription
Quantity
eth.getUncleCountByBlockNumber(["5127400"])

See also JSON RPC eth_getUncleCountByBlockNumber

eth.newPendingTransactionFilter

Creates an update filter

Invocation
eth.newPendingTransactionFilter()
This method doesn't have parameters.
Returned typeDescription
Quantity
eth.newPendingTransactionFilter()

See also JSON RPC eth_newPendingTransactionFilter

eth.pendingTransactions

Returns the pending transactions list

Invocation
eth.pendingTransactions
This method doesn't have parameters.
Returned typeDescription
TransactionForRpc object
eth.pendingTransactions

See also JSON RPC eth_pendingTransactions

eth.protocolVersion

Returns ETH protocol version

Invocation
eth.protocolVersion
This method doesn't have parameters.
Returned typeDescription
String
eth.protocolVersion

See also JSON RPC eth_protocolVersion

eth.sendEth

Invocation
eth.sendEth(from, to, amountInEth)
ParameterTypeDescription
fromString
toString
amountInEthQuantity
Returned typeDescription
String
Example request of eth.sendEth
eth.sendEth(from, to, amountInEth)

eth.sendRawTransaction

Send a raw transaction to the tx pool and broadcasting

Invocation
eth.sendRawTransaction(transaction)
ParameterTypeDescription
transactionData
Returned typeDescription
Hash
eth.sendRawTransaction(["0xf86380843b9aca0082520894b943b13292086848d8180d75c73361107920bb1a80802ea0385656b91b8f1f5139e9ba3449b946a446c9cfe7adb91b180ddc22c33b17ac4da01fe821879d386b140fd8080dcaaa98b8c709c5025c8c4dea1334609ebac41b6c"])

See also JSON RPC eth_sendRawTransaction

eth.sendTransaction

Send a transaction to the tx pool and broadcasting

Invocation
eth.sendTransaction(rpcTx)
ParameterTypeDescription
rpcTxTransactionForRpc object
Returned typeDescription
Hash
eth.sendTransaction([{"From": "0xc2208fe87805279b03c1a8a78d7ee4bfdb0e48ee", "Gas": "21000","GasPrice": "20000000000", "Nonce": "23794", "To": "0x2d44c0e097f6cd0f514edac633d82e01280b4a5c" } ])

See also JSON RPC eth_sendTransaction

eth.sendWei

Invocation
eth.sendWei(from, to, amountInWei)
ParameterTypeDescription
fromString
toString
amountInWeiQuantity
Returned typeDescription
String
Example request of eth.sendWei
eth.sendWei(from, to, amountInWei)

eth.syncing

Returns syncing status

Invocation
eth.syncing()
This method doesn't have parameters.
Returned typeDescription
SyncingResult object
eth.syncing()

See also JSON RPC eth_syncing

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/net.html b/docs/nethermind-utilities/cli/net.html new file mode 100644 index 000000000..b9d05a618 --- /dev/null +++ b/docs/nethermind-utilities/cli/net.html @@ -0,0 +1,17 @@ + + + + + +net | Nethermind Documentation + + + + + +
+

net

net.localEnode

Invocation
net.localEnode
This method doesn't have parameters.
Returned typeDescription
String
net.localEnode

See also JSON RPC net_localEnode

net.peerCount

Invocation
net.peerCount
This method doesn't have parameters.
Returned typeDescription
Quantity
net.peerCount

See also JSON RPC net_peerCount

net.version

Invocation
net.version
This method doesn't have parameters.
Returned typeDescription
String
net.version

See also JSON RPC net_version

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/node.html b/docs/nethermind-utilities/cli/node.html new file mode 100644 index 000000000..3b30d0d92 --- /dev/null +++ b/docs/nethermind-utilities/cli/node.html @@ -0,0 +1,17 @@ + + + + + +node | Nethermind Documentation + + + + + +
+

node

node.address

Invocation
node.address
This method doesn't have parameters.
Returned typeDescription
String
Example request of node.address
node.address

node.enode

Invocation
node.enode
This method doesn't have parameters.
Returned typeDescription
String
Example request of node.enode
node.enode

node.setNodeKey

Invocation
node.setNodeKey(key)
ParameterTypeDescription
keyString
Returned typeDescription
String
Example request of node.setNodeKey
node.setNodeKey(key)

node.switch

Invocation
node.switch(uri)
ParameterTypeDescription
uriString
Returned typeDescription
String
Example request of node.switch
node.switch(uri)

node.switchLocal

Invocation
node.switchLocal(uri)
ParameterTypeDescription
uriString
Returned typeDescription
String
Example request of node.switchLocal
node.switchLocal(uri)

node.uri

Invocation
node.uri
This method doesn't have parameters.
Returned typeDescription
JavaScript Object
Example request of node.uri
node.uri
+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/parity.html b/docs/nethermind-utilities/cli/parity.html new file mode 100644 index 000000000..d404244b0 --- /dev/null +++ b/docs/nethermind-utilities/cli/parity.html @@ -0,0 +1,18 @@ + + + + + +parity | Nethermind Documentation + + + + + +
+

parity

parity.clearEngineSigner

Clears an authority account for signing consensus messages. Blocks will not be sealed.

Invocation
parity.clearEngineSigner()
This method doesn't have parameters.
Returned typeDescription
Boolean
Example request of parity.clearEngineSigner
parity.clearEngineSigner()

See also JSON RPC parity_clearEngineSigner

parity.enode

Returns the node enode URI.

Invocation
parity.enode
This method doesn't have parameters.
Returned typeDescription
String
parity.enode

See also JSON RPC parity_enode

parity.getBlockReceipts

Get receipts from all transactions from particular block, more efficient than fetching the receipts one-by-one.

Invocation
parity.getBlockReceipts(blockParameter)
ParameterTypeDescription
blockParameterBlockParameter object
Returned typeDescription
ReceiptForRpc object
parity.getBlockReceipts(latest)

See also JSON RPC parity_getBlockReceipts

parity.netPeers

Returns connected peers. Peers with non-empty protocols have completed handshake.

Invocation
parity.netPeers
This method doesn't have parameters.
Returned typeDescription
ParityNetPeers object
parity.netPeers

See also JSON RPC parity_netPeers

parity.pendingTransactions

Returns a list of transactions currently in the queue. If address is provided, returns transactions only with given +sender address.

Invocation
parity.pendingTransactions(address)
ParameterTypeDescription
addressAddress
Returned typeDescription
ParityTransaction object
parity.pendingTransactions(["0x78467cada5f1883e79fcf0f3ebfa50abeec8c820"])

See also JSON RPC parity_pendingTransactions

parity.setEngineSigner

Sets an authority account for signing consensus messages.

Invocation
parity.setEngineSigner(address, password)
ParameterTypeDescription
addressAddress
passwordString
Returned typeDescription
Boolean
parity.setEngineSigner(address, password)

See also JSON RPC parity_setEngineSigner

parity.setEngineSignerSecret

Sets an authority account for signing consensus messages.

Invocation
parity.setEngineSignerSecret(privateKey)
ParameterTypeDescription
privateKeyString
Returned typeDescription
Boolean
Example request of parity.setEngineSignerSecret
parity.setEngineSignerSecret(privateKey)

See also JSON RPC parity_setEngineSignerSecret

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/personal.html b/docs/nethermind-utilities/cli/personal.html new file mode 100644 index 000000000..d714b3aa0 --- /dev/null +++ b/docs/nethermind-utilities/cli/personal.html @@ -0,0 +1,17 @@ + + + + + +personal | Nethermind Documentation + + + + + +
+

personal

personal.importRawKey

Invocation
personal.importRawKey(keyData, passphrase)
ParameterTypeDescription
keyDataData
passphraseString
Returned typeDescription
Address
personal.importRawKey(keyData, passphrase)

See also JSON RPC personal_importRawKey

personal.listAccounts

Invocation
personal.listAccounts
This method doesn't have parameters.
Returned typeDescription
Address
personal.listAccounts

See also JSON RPC personal_listAccounts

personal.lockAccount

Invocation
personal.lockAccount(address)
ParameterTypeDescription
addressAddress
Returned typeDescription
Boolean
personal.lockAccount(707Fc13C0eB628c074f7ff514Ae21ACaeE0ec072)

See also JSON RPC personal_lockAccount

personal.newAccount

Invocation
personal.newAccount(passphrase)
ParameterTypeDescription
passphraseString
Returned typeDescription
Address
personal.newAccount(testPass)

See also JSON RPC personal_newAccount

personal.unlockAccount

Invocation
personal.unlockAccount(address, passphrase)
ParameterTypeDescription
addressAddress
passphraseString
Returned typeDescription
Boolean
personal.unlockAccount(address, passphrase)

See also JSON RPC personal_unlockAccount

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/proof.html b/docs/nethermind-utilities/cli/proof.html new file mode 100644 index 000000000..790d46a0d --- /dev/null +++ b/docs/nethermind-utilities/cli/proof.html @@ -0,0 +1,19 @@ + + + + + +proof | Nethermind Documentation + + + + + +
+

proof

proof.getTransactionByHash

This function returns the same result as eth_getTransactionReceipt and also a tx proof, receipt proof and serialized +block headers.

Invocation
proof.getTransactionByHash(txHash, includeHeader)
ParameterTypeDescription
txHashHash
includeHeaderBoolean
Returned typeDescription
TransactionWithProof object
proof.getTransactionByHash(txHash, includeHeader)

See also JSON RPC proof_getTransactionByHash

proof.getTransactionReceipt

This function should return the same result as eth_call and also proofs of all used accounts and their storages and +serialized block headers.

Invocation
proof.getTransactionReceipt(txHash, includeHeader)
ParameterTypeDescription
txHashHash
includeHeaderBoolean
Returned typeDescription
ReceiptWithProof object
proof.getTransactionReceipt(txHash, includeHeader)

See also JSON RPC proof_getTransactionReceipt

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/system.html b/docs/nethermind-utilities/cli/system.html new file mode 100644 index 000000000..c7e0a8c6e --- /dev/null +++ b/docs/nethermind-utilities/cli/system.html @@ -0,0 +1,17 @@ + + + + + +system | Nethermind Documentation + + + + + +
+

system

system.getVariable

Invocation
system.getVariable(name, defaultValue)
ParameterTypeDescription
nameString
defaultValueString
Returned typeDescription
String
Example request of system.getVariable
system.getVariable(name, defaultValue)

system.memory

Invocation
system.memory(name, defaultValue)
ParameterTypeDescription
nameString
defaultValueString
Returned typeDescription
String
Example request of system.memory
system.memory(name, defaultValue)
+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/trace.html b/docs/nethermind-utilities/cli/trace.html new file mode 100644 index 000000000..cef8f4892 --- /dev/null +++ b/docs/nethermind-utilities/cli/trace.html @@ -0,0 +1,17 @@ + + + + + +trace | Nethermind Documentation + + + + + +
+

trace

trace.block

Returns traces created at given block.

Invocation
trace.block(numberOrTag)
ParameterTypeDescription
numberOrTagBlockParameter object
Returned typeDescription
Array
trace.block(latest)

See also JSON RPC trace_block

trace.call

Traces a call, returning the traces

Invocation
trace.call(call, traceTypes, blockParameter)
ParameterTypeDescription
callTransactionForRpc object
traceTypesArrayPossible values : ["VmTrace", "StateDiff", "Trace", "Rewards", "All"]
blockParameterBlockParameter object
Returned typeDescription
ParityTxTraceFromReplay object
trace.call(call, traceTypes, blockParameter)

See also JSON RPC trace_call

trace.filter

Return all traces of the given filter

Invocation
trace.filter(traceFilterForRpc)
ParameterTypeDescription
traceFilterForRpcTraceFilterForRpc object
Returned typeDescription
Array
trace.filter(traceFilterForRpc)

See also JSON RPC trace_filter

trace.rawTransaction

Traces a call to eth_sendRawTransaction without making the call, returning the traces

Invocation
trace.rawTransaction(data, traceTypes)
ParameterTypeDescription
dataData
traceTypesArrayPossible values : ["VmTrace", "StateDiff", "Trace", "Rewards", "All"]
Returned typeDescription
ParityTxTraceFromReplay object
trace.rawTransaction(data, traceTypes)

See also JSON RPC trace_rawTransaction

trace.replayBlockTransactions

Replays all transactions in a block returning the requested traces for each transaction.

Invocation
trace.replayBlockTransactions(blockParameter, traceTypes)
ParameterTypeDescription
blockParameterBlockParameter object
traceTypesArrayPossible values : ["VmTrace", "StateDiff", "Trace", "Rewards", "All"]
Returned typeDescription
Array
trace.replayBlockTransactions(blockParameter, traceTypes)

See also JSON RPC trace_replayBlockTransactions

trace.replayTransaction

Replays a transaction, returning the traces.

Invocation
trace.replayTransaction(txHash, traceTypes)
ParameterTypeDescription
txHashHash
traceTypesArrayPossible values : ["VmTrace", "StateDiff", "Trace", "Rewards", "All"]
Returned typeDescription
ParityTxTraceFromReplay object
trace.replayTransaction(txHash, traceTypes)

See also JSON RPC trace_replayTransaction

trace.transaction

Returns all traces of given transaction

Invocation
trace.transaction(txHash)
ParameterTypeDescription
txHashHash
Returned typeDescription
Array
trace.transaction(["0x203abf19610ce15bc509d4b341e907ff8c5a8287ae61186fd4da82146408c28c"])

See also JSON RPC trace_transaction

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/txpool.html b/docs/nethermind-utilities/cli/txpool.html new file mode 100644 index 000000000..6924c547d --- /dev/null +++ b/docs/nethermind-utilities/cli/txpool.html @@ -0,0 +1,17 @@ + + + + + +txpool | Nethermind Documentation + + + + + +
+

txpool

txpool.content

Returns tx pool content.

Invocation
txpool.content
This method doesn't have parameters.
Returned typeDescription
TxPoolContent object
txpool.content

See also JSON RPC txpool_content

txpool.inspect

Returns a detailed info on tx pool transactions.

Invocation
txpool.inspect
This method doesn't have parameters.
Returned typeDescription
TxPoolInspection object
txpool.inspect

See also JSON RPC txpool_inspect

txpool.status

Returns a tx pool status.

Invocation
txpool.status
This method doesn't have parameters.
Returned typeDescription
TxPoolStatus object
txpool.status

See also JSON RPC txpool_status

+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/cli/web3.html b/docs/nethermind-utilities/cli/web3.html new file mode 100644 index 000000000..718a8bfca --- /dev/null +++ b/docs/nethermind-utilities/cli/web3.html @@ -0,0 +1,17 @@ + + + + + +web3 | Nethermind Documentation + + + + + +
+

web3

web3.abi

Invocation
web3.abi(name)
ParameterTypeDescription
nameString
Returned typeDescription
String
Example request of web3.abi
web3.abi(name)

web3.clientVersion

Returns the current client version.

Invocation
web3.clientVersion
This method doesn't have parameters.
Returned typeDescription
String
web3.clientVersion

See also JSON RPC web3_clientVersion

web3.sha3

Returns Keccak of the given data.

Invocation
web3.sha3(data)
ParameterTypeDescription
dataData
Returned typeDescription
Hash
web3.sha3(["0x47767638636211111a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01abc"])

See also JSON RPC web3_sha3

web3.toDecimal

Invocation
web3.toDecimal(hex)
ParameterTypeDescription
hexString
Returned typeDescription
JavaScript Object
Example request of web3.toDecimal
web3.toDecimal(hex)
+ + + + \ No newline at end of file diff --git a/docs/nethermind-utilities/pipeline.html b/docs/nethermind-utilities/pipeline.html new file mode 100644 index 000000000..c139199c8 --- /dev/null +++ b/docs/nethermind-utilities/pipeline.html @@ -0,0 +1,29 @@ + + + + + +Pipeline | Nethermind Documentation + + + + + +
+

Pipeline

Please note that the pipeline source code is still a work in progress and there will be significant changes in the coming weeks!

Nethermind under Nethermind.Pipeline project provides couple of interfaces and classes used in creating pipelines.

Pipeline items

  • IPipelineElement - base building block of the pipeline.
  • IPipelineElement<TOut> - generic interface used for emitting data of type TOut. to the next element (most of the +time this is the first element in the collection).
  • IPipelineElement<TIn, TOut> - interface used for both emitting and subscribing to the data from the previous +block, so TIn is the type of data from the previous block and TOut is the type of data that the element wants to +give to the next element.
  • IPipeline - collection of IPipelineElement used to store our pipeline in the memory.
  • IPipelineBuilder<TSource, TOutput> - when we want to create our pipeline the fastest way will be to use +implementation of this interface (implemented in PipelineBuilder.cs). Builder collects all of the elements we want +to create the pipeline with and creates the flow of the data between them. Keep in mind that once the pipeline is +created it's immutable.

Publishers

Publishers are just classes implementing IPipelineElement<TIn, TOut> (so they are able to subscribe and emit data) +with the additional functionality of publishing the data to either WebSockets or as logs to the file. We add them to the +pipeline the same way as normal elements - by using PipelineBuilder

  • WebSocketsPublisher
  • LogPublisher

Building pipeline

We will build a Nethermind plugin +(see nethermind plugins) which observes newly created +blocks and see whether there are any transactions to a specific contract address.

Firstly we need to create our pipeline elements. With this case there will only be 3 of them - source, processor and +publisher but there is nothing standing in the way in adding more elements.

    public class NewTransactionsSource<TIn> : IPipelineElement<TIn> where TIn : Transaction
{
private Block _block;
private IBlockProcessor _blockProcessor;

public Action<TIn> Emit { private get; set; }

public NewTransactionsSource(IBlockProcessor blockProcessor)
{
_blockProcessor = blockProcessor;


}

public void OnNewBlockProcessed(BlockProcessedEventArgs args)
{
var block = args.Block;

foreach(var tx in block.Transactions)
{
Emit((TIn)tx);
}
}
}
    public class TransactionProcessorElement<TIn, TOut> : IPipelineElement<TIn, TOut>
where TIn : Transaction
where TOut : TIn
{
private Address _address = new Address("0xFca59Cd816aB1eaD66534D82bc21E7515cE441CF");
public Action<TOut> Emit { private get; set; }

public void SubscribeToData(TIn data)
{
if(data.To == _address)
{
Emit((TOut)data);
}
}
}

After that create plugin file and build your pipeline with IPipelineBuilder

    public class PipelineExamplePlugin : INethermindPlugin
{
public string Name => "Pipeline example";
public string Description => "Example on how to deal with Nethermind's pipeline";
public string Author => "Nethermind team";

private INethermindApi _api;
private IPipeline _pipeline;

public ValueTask DisposeAsync()
{
return ValueTask.CompletedTask;
}

public Task Init(INethermindApi nethermindApi)
{
_api = nethermindApi;

var sourceElement = new NewTransactionsSource<Transaction>(_api.MainBlockProcessor);
var processorElement = new TransactionProcessorElement<Transaction, Transaction>();
var webSocketsPublisher = new WebSocketsPublisher<Transaction, Transaction>("example-publisher", _api.EthereumJsonSerializer);
_api.WebSocketsManager.AddModule(webSocketsPublisher);

var pipelineBuilder = new PipelineBuilder<Transaction, Transaction>(sourceElement);
_pipeline = pipelineBuilder.AddElement(processorElement).AddElement(webSocketsPublisher).Build();

return Task.CompletedTask;
}

public Task InitNetworkProtocol()
{
return Task.CompletedTask;
}

public Task InitRpcModules()
{
return Task.CompletedTask;
}
}

With that, all you need is to add the plugin to your node and watch how transactions are being streamed through web +sockets.

+ + + + \ No newline at end of file diff --git a/docs/resources/connecting-wallet.html b/docs/resources/connecting-wallet.html new file mode 100644 index 000000000..25ba0ea5b --- /dev/null +++ b/docs/resources/connecting-wallet.html @@ -0,0 +1,17 @@ + + + + + +Connecting Wallet | Nethermind Documentation + + + + + + + + + + \ No newline at end of file diff --git a/docs/resources/faq.html b/docs/resources/faq.html new file mode 100644 index 000000000..f60ee92f6 --- /dev/null +++ b/docs/resources/faq.html @@ -0,0 +1,33 @@ + + + + + +FAQ | Nethermind Documentation + + + + + +
+

FAQ

How do I upgrade my node?

Upgrading Nethermind for Docker users

Pull the latest version of Nethermind using the latest tag. You can find specific tag +at Docker Hub.

docker pull nethermind/nethermind:latest

or pull with docker-compose if the nethermind/nethermind:latest base image is specified

docker-compose pull

Upgrading Nethermind for Systemd users

Simply download the latest Nethermind package either +from https://downloads.nethermind.io +or https://github.com/NethermindEth/nethermind/releases and make +sure that the package is extracted in the WorkingDirectory path defined in your systemd service. Make sure to stop +the service before the upgrade and start it after.

WorkingDirectory=/home/nethermind/nethermind

Upgrading Nethermind when running as a background process

Download the latest Nethermind package either from https://downloads.nethermind.io +or https://github.com/NethermindEth/nethermind/releases and +extract the package in the folder you currently use for running Nethermind. Make sure the service is down before the +update. Make sure to stop the service before the upgrade and start it after.

What is the minimum viable config to serve ETH2 validator requests?

This config downloads a minimal amount of bodies and receipts to be able to serve ETH2 validator requests since the +deposit contract deployment. It also enables JSON RPC (important - make sure that you do not open firewall to the +outside world!)

nethermind --config mainnet --Init.BaseDbPath /your/db/path

If you have any issues, please reach out to us on Discord: https://discord.gg/X539yhn.

Can I disable logging to file?

You can find more details on the logging config page here

Can I disable logging of JSON RPC calls?

You can find more details on the logging config page here

How can I configure validator on AuRa / Clique?

You can find more details on running validators in the docs -> +for AuRa and +for Clique.

You can learn more about how to setup a aura validator here

My network bandwidth is used up by the Nethermind node

Try changing the config to a lower number (--Network.ActivePeersMaxCount 25)

Is my node synced?

Your node is synced when it shows log lines starting with:

Processed ...

And the block numbers shown are at the head of the chain.

Also, to check if your node is synced, you may execute eth_syncing call check its result

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' localhost:8545

If the result shows false it means that your node is synced

{"jsonrpc":"2.0","result":false,"id":1}
info

In blockchain, any node can never be 100% sure it is synced because there is no central source of truth - so your node +is generally not able to tell you that it is synced but, it is able to tell you that it believes it is synced based on +what it knows from the peers that it talks to).

I want to run two or more nodes on one machine. How can I achieve this?

You have to configure a few ports used by Nethermind.

SettingsDefault ValueComment
JsonRpc.EnginePort8551Remember to change it on your Consensus client.
JsonRpc.Port8545Only needed if you are using standard JsonRpc
JsonRpc.WebSocketsPort8545By default same as the JsonRpc port. Only relevant when you use WebSockets
Network.P2PPort30303
Network.DiscoveryPort30303

The example of parameters that you have to pass to your second node when the first has been running with default +settings:\ +--JsonRpc.EnginePort 8552 --JsonRpc.Port 8546 --Network.P2PPort 30304 --Network.DiscoveryPort 30304

+ + + + \ No newline at end of file diff --git a/docs/resources/firewall-configuration.html b/docs/resources/firewall-configuration.html new file mode 100644 index 000000000..40e631ff6 --- /dev/null +++ b/docs/resources/firewall-configuration.html @@ -0,0 +1,17 @@ + + + + + +Firewall Configuration | Nethermind Documentation + + + + + +
+

Firewall Configuration

info

Keep 8545 (or 8000-9000) closed except for the trusted machines - this is the JSON RPC port which gives admin access to the node.

info

Keep TCP 30303 (or 30300-30400) open for the outside world so other nodes can connect to your node.

info

Keep UDP 30303 (or 30300-30400) open for the outside world so other nodes can discover your node.

+ + + + \ No newline at end of file diff --git a/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack.html b/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack.html new file mode 100644 index 000000000..7d0252de8 --- /dev/null +++ b/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stack.html @@ -0,0 +1,29 @@ + + + + + +Deploy Nethermind with Monitoring stack | Nethermind Documentation + + + + + +
+

Deploy Nethermind with Monitoring stack

Below tutorial will guide you through the Nethermind node deployment together with full monitoring stack which consists +of:

  • Grafana with a beautiful, preloaded dashboard to monitor your Nethermind node performance
  • Prometheus/Pushgateway to pull and push metrics generated by Nethermind client
  • Seq to have an easy, queriable view of Nethermind client logs

Prerequisites

  • Terraform v0.12.7 <
  • Cloud provider (in this tutorial we will be using Digital Ocean, the terraform recipe can +be configured to use any other provider of your choice UpCloud/AWS/Google etc.)

:tools: Setting up

First of all let us download repository with necessary files

git clone https://github.com/NethermindEth/terraform-nethermind

Let's move to the cloned directory

cd terraform-nethermind/

Create a terraform.tfvars file and add these 2 variables

{% tabs %} +{% tab title="terraform.tfvars" %}

do_token = "Your DigitalOcean token goes here"
pvt_key = "path/to/your/private_ssh_key"

{% endtab %} +{% endtabs %}

Make sure that the public_key variable in main.tf file points to your Public key path

{% tabs %} +{% tab title="main.tf" %}

resource "digitalocean_ssh_key" "key" {
name = "SSH Key Example for "
public_key = file("./private.key.pub")
}

{% endtab %} +{% endtabs %}

How to get those variables? (skip this part if you know already)

do_token

Can be generated on DigitalOcean panel. First go to the API management (bottom of the left navigation panel)

Click on the Generate New Token button

Give it a name and generate

Copy the token and place in its spot in terraform.tfvars file

pvt_key

Generate ssh key, we will be using ed25519 algorithm in our example

ssh-keygen -t ed25519 -a 100 -f private.key

pvt_key variable will now look like this:

pvt_key = "./private.key"

Running the stack

Confirm that terraform can be initialized, run this command from within terraform-templates directory

terraform init

You should see a green light in your console

Let's preview our plan before applying and save it so that it can be used in a future

terraform plan -out myplan

You can now provide some basic configuration to your VM/Nethermind Node

A list of available configs can be found here

caution

:fire_extinguisher: If you chose to enable JsonRpc (it will run on port 8545 by default) make sure that you set +up Firewall rules either in DigitalOcean or by using Linux iptables

Let's apply our plan and start deploying whole stack (it should take no longer than 3 minutes)

terraform apply myplan

Wait until terraform is done deploying and if everything went smooth you should see

Exploring the stack

Grab the IP of your new Droplet from the DigitalOcean panel

Grafana Dashboard

Go to the YOUR_DROPLET_IP:3000

Login to Grafana with admin:admin credentials and change the password if you wish

Go to YOUR_DROPLET_IP:3000/dashboards endpoint

Click on the Nethermind Dashboard and you should see charts with Nethermind metrics

Prometheus

Go to the YOUR_DROPLET_IP:9090

Explore Nethermind metrics, visualize and analyse using prometheus syntax, a list of available metrics with their +descriptions can be found here:

{% content-ref url="../ethereum-client/metrics/" %} +metrics +{% endcontent-ref %}

Pushgateway

Go to the YOUR_DROPLET_IP:9091 and verify if metrics are inflowing

Seq

Go to the YOUR_DROPLET_IP:5341, you will be albe to query your Nethermind client logs. Feel free to create some +useful Signals, Queries or Dashboards.

Destroying the stack

Use below command to destroy your terraform stack (We will need to provide variables, can be random, once again as we +haven't set any default values for them. Hopefully it will change in the future.)

terraform destroy --auto-approve
+ + + + \ No newline at end of file diff --git a/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind.html b/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind.html new file mode 100644 index 000000000..4a2fa11b2 --- /dev/null +++ b/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermind.html @@ -0,0 +1,25 @@ + + + + + +ETH2 <-> Nethermind | Nethermind Documentation + + + + + +
+

ETH2 <-> Nethermind

Nethermind client as ETH1 endpoint

caution

You should always consider being able to switch to Infura or another provider as a backup for safety (or run two nodes +yourself):point_left:

caution

For a more comprehensive step-by-step guide, you should look into one of these awesome +guides -> https://someresat.medium.com/. Below you will find instructions on how to run +Nethermind node -> Step 6 — Set up an Ethereum (Eth1) Node

Get & Run Nethermind

  • Download the Nethermind client

You can get it either +from Github Releases or our Downloads page

  • unzip the package
  • run the Nethermind node (use Nethermind.Launcher or change configs/mainnet.cfg and +run Nethermind.Runner --config mainnet)
info

use the Linux screen utility to keep your node working in the background

screen -S nethermind
./Nethermind.Launcher

danger

Enable JSON RPC service so that your ETH2 Beacon node will be able to communicate

danger

Remember to setup you firewall configuration

Configure EthStats for your node if needed:

You should see the node starting:

info

Tip: Ctrl + A + D to leave the screen

Running Nethermind as a systemd service

You might follow the following guide to run Nethermind as +a +systemd service

Monitoring Nethermind Node Health

Follow this guide to setup +Prometheus/Grafana based local setup and monitor your node's most important stats there

info

The Block Number will be 0 for the unsynced node

To check if your node is synced you may execute eth_syncing call check its result

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' localhost:8545

If the result shows false it means that your node is synced

{"jsonrpc":"2.0","result":false,"id":1}

Check the following guide to get even better node health monitoring:

+ + + + \ No newline at end of file diff --git a/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind.html b/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind.html new file mode 100644 index 000000000..1ea5077ae --- /dev/null +++ b/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermind.html @@ -0,0 +1,23 @@ + + + + + +ETH2 &lt;-&gt; Nethermind | Nethermind Documentation + + + + + +
+

ETH2 <-> Nethermind

Nethermind client as ETH1 endpoint

caution

You should always consider being able to switch to Infura or another provider as a backup for safety (or run two nodes +yourself)👈

caution

For a more comprehensive step-by-step guide, you should look into one of these awesome guides +-> https://someresat.medium.com/. Below you will find instructions on how to run +Nethermind node -> Step 6 — Set up an Ethereum (Eth1) Node

Get & Run Nethermind

  • Download the Nethermind client

You can get it either from Github Releases or our Downloads page:

{% page-ref page="../ethereum-client/download-sources/" %}

  • unzip the package
  • run the Nethermind node (use Nethermind.Launcher or change configs/mainnet.cfg and +run Nethermind.Runner --config mainnet)
info

use the Linux screen utility to keep your node working in the background

screen -S nethermind
./Nethermind.Launcher

danger

Enable JSON RPC service so that your ETH2 Beacon node will be able to communicate

info

Setup your firewall configuration

Configure EthStats for your node if needed:

You should see the node starting:

Tip: Ctrl + A + D to leave the screen +:::

Monitoring Nethermind Node Health

Follow this guide to setup +Prometheus/Grafana based local setup and monitor your node's most important stats there

info

The Block Number will be 0 for the unsynced node

To check if your node is synced you may execute eth_syncing call check its result

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' localhost:8545

If the result shows false it means that your node is synced

{"jsonrpc":"2.0","result":false,"id":1}
+ + + + \ No newline at end of file diff --git a/docs/resources/guides-and-helpers/validator-setup/aura-validator.html b/docs/resources/guides-and-helpers/validator-setup/aura-validator.html new file mode 100644 index 000000000..3c842d5cc --- /dev/null +++ b/docs/resources/guides-and-helpers/validator-setup/aura-validator.html @@ -0,0 +1,36 @@ + + + + + +Aura Validator | Nethermind Documentation + + + + + +
+

Aura Validator

This article will lead you through docker-compose setup of Nethermind Aura Validator (xDai chain in this example). +Same result can be obtained +by Downloading & Running Nethermind +package or by Building Nethermind from the source code.

If you chose not to use docker-compose, you can skip docker-compose related sections and read +about config file and private key configuration +only.

Prerequisites

  • docker-compose
  • docker
  • machine with at least 4GB RAM is recommended
sudo apt-get install docker docker-compose -y

Clock synchronization

You system clock needs to be synchronized otherwise you might encounter skipping block sealing. By +default stepDuration is configured to 5s.

Verify if your system clock is synchronized, type timedatectl status and you should see similar output:

Local time: Tue 2020-06-30 17:16:19 UTC
Universal time: Tue 2020-06-30 17:16:19 UTC
RTC time: Tue 2020-06-30 17:16:19
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no

If System clock synchronized displays yes you are all set, otherwise you may need to either:

  • synchronize clock with NTP servers (allow UDP port 123 for both incoming and outgoing traffic)
  • use below script to sync with google.com:

Create fixtime.sh script and run it with watch -n 60 command in a screen

echo sudo date -s '"$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"' > fixtime.sh
chmod +x fixtime.sh
screen -S time
watch -n 60 ./fixtime.sh

Press Ctrl+A+D to leave the screen

Docker-compose file sample

Create and editdocker-compose.yml file

nano docker-compose.yml

{% tabs %} +{% tab title="docker-compose.yml" %}

version: '3.5'

services:
nethermind-validator:
image: nethermind/nethermind
container_name: nethermind-validator
restart: unless-stopped
ports:
- 8545:8545
- 30303:30303
network_mode: host
environment:
- NETHERMIND_CONFIG=xdai
volumes:
- ${PWD}/nethermind_db:/nethermind/nethermind_db
- ${PWD}/keystore:/nethermind/keystore
- ${PWD}/logs:/nethermind/logs
- ${PWD}/xdai.cfg:/nethermind/configs/xdai.cfg
- ${PWD}/NLog.config:/nethermind/NLog.config
- ${PWD}/static-nodes.json:/nethermind/Data/static-nodes.json

volumes:
nethermind_db:
driver: local
name: nethermind_db
keystore:
driver: local
name: keystore
logs:
driver: local
name: logs

{% endtab %} +{% endtabs %}

Configure Nethermind node via environment variables or use local config file and map it to the one, existing inside +container (xdai.cfg file in above example).

info

Make sure that nethermind_db, keystore(logs - optional ) are mapped, otherwise you might lose database or keys

NLog.config file is optional.\ +static-nodes.json can be filled with an +array +of enodes, this is also optional.

Mining Private key

danger

Make sure that the filename contains key's public address otherwise it won't be recognized by Nethermind Client as a +keyfile.\ +\ +Correct naming of a keyfile: key-a5237f7f43cc46cba43ac212dabd0c45e3e3050a

The keyfile should be then stored inside keystore volume.

Config file

Things to be configured:

  • Init.IsMining true
  • Init.MemoryHint can be left default, recommended to configure it accordingly to the machine hardware setup ( +for xdai 1000000000 is enough)
  • EthStats section if you wish to report node status to the ethstats page for a given network
  • Metrics section if running +local/remote Metrics infrastructure
  • KeyStore.PasswordFiles path to the file containing password for mining private key
  • KeyStore.UnlockAccounts an array of accounts, provide mining public address here
  • KeyStore.BlockAuthorAccount mining public address should be provided here as well
  • Aura.ForceSealing set to true

{% tabs %} +{% tab title="xdai.cfg" %}

{
"Init": {
"WebSocketsEnabled": false,
"StoreReceipts": true,
"IsMining": true,
"ChainSpecPath": "chainspec/xdai.json",
"GenesisHash": "0x4f1dd23188aab3a76b463e4af801b52b1248ef073c648cbdc4c9333d3da79756",
"BaseDbPath": "nethermind_db/xdai",
"LogFileName": "xdai.logs.txt",
"MemoryHint": 3000000000,
"StaticNodesPath": "Data/static-nodes.json"
},
"Network": {
"DiscoveryPort": 30303,
"P2PPort": 30303
},
"JsonRpc": {
"Enabled": false,
"Host": "127.0.0.1",
"Port": 8545,
"WebSocketsPort": 8546
},
"Db": {
"HeadersDbCacheIndexAndFilterBlocks": false,
"BlocksDbCacheIndexAndFilterBlocks": false,
"ReceiptsDbCacheIndexAndFilterBlocks": false,
"BlockInfosDbCacheIndexAndFilterBlocks": false
},
"Sync": {
"FastSync": true,
"PivotNumber": 10410000,
"PivotHash": "0x806f498fdde010f25bd3beb18e6f8a9c9450752f8c0e27da2cd2465ff184628c",
"PivotTotalDifficulty": "3542339439646969404653729663364707080928280566",
"FastBlocks": true,
"UseGethLimitsInFastBlocks": false,
"FastSyncCatchUpHeightDelta": 10000000000
},
"EthStats": {
"Enabled": false,
"Server": "ws://localhost:3000/api",
"Name": "Nethermind xDai",
"Secret": "secret",
"Contact": "hello@nethermind.io"
},
"Metrics": {
"NodeName": "Nethermind xDai",
"Enabled": false,
"PushGatewayUrl": "http://localhost:9091/metrics",
"IntervalSeconds": 5
},
"KeyStore": {
"PasswordFiles": [
"keystore/password.file"
],
"UnlockAccounts": [
"0x..."
],
"BlockAuthorAccount": "0x..."
},
"Aura": {
"ForceSealing": true
},
"Bloom": {
"IndexLevelBucketSizes": [
16,
16,
16
]
}
}

{% endtab %} +{% endtabs %}

Running Validator node

Run it with a simple docker-compose command.

docker-compose up -d

You will need to wait for the node to be fully synchronized.

To check the logs and verify if it is sealing blocks as expected (look for the Sealed block log).

docker-compose logs -f nethermind-validator

+ + + + \ No newline at end of file diff --git a/docs/resources/guides-and-helpers/validator-setup/eth2-validator.html b/docs/resources/guides-and-helpers/validator-setup/eth2-validator.html new file mode 100644 index 000000000..bf4a76d41 --- /dev/null +++ b/docs/resources/guides-and-helpers/validator-setup/eth2-validator.html @@ -0,0 +1,112 @@ + + + + + +Eth2 Validator | Nethermind Documentation + + + + + +
+

Eth2 Validator

Introduction

This tutorial will allow anyone to set up an Ethereum Validator node as long as you have the sufficient hardware +requirements and familiarity with the command line. This guide will use installation instructions for Ubuntu 20.04 but +instructions to other operating systems will be linked.

Using Testnets

We highly recommend you use one of the following test networks before you attempt running a validator on Ethereum +Mainnet to get familiarized with the process:

  • Ropsten
  • Kiln

Coming Soon

  • Sepolia
  • Goerli

We will go through the most important steps in the checklist and +a general overview of the responsibilities of a validator provided by +the Ethereum foundation.

Hardware and Network Requirements

You will need to run two pieces of software on your machine to run a validator. The two software have several different +implementations maintained by different teams. Each implementation has their own hardware requirements, but generally +you would need for mainnet:

  • Memory: 16 GB RAM
  • Processor: Intel Core i5–760 or better (CPUs made later than 2010 are usually fine)
  • Storage: 1 TB SSD
  • Network: Broadband connection (preferably wired)

Please consult the docs / website of the specific client software you choose to run the Ethereum chain with. Note that +the hardware requirements are lower if you intend to run on testnets only.

Setup

Installing Prerequisites

The two pieces of software to run a node for proof of stake Ethereum are called the consensus client and the execution +client. The consensus client maintains the proof of stake consensus mechanism while the execution client stores and +validates transactions for the proof of stake layer.

Install these prerequisites before proceeding:

sudo apt -y install software-properties-common wget curl ccze

This guide will go through the Nethermind and Lighthouse client combination.

Installing Nethermind

Run the following command to install Nethermind:

sudo add-apt-repository ppa:nethermindeth/nethermind; sudo apt install nethermind

See here for docs for +other ways to install Nethermind.

Installing Consensus Client

{% tabs %} +{% tab title="Lighthouse" %} +Download the latest release from lighthouse. You can also install +lighthouse through other methods by following their docs. To +install v2.3.1 of lighthouse (latest release as of June 21 2022):

wget <https://github.com/sigp/lighthouse/releases/download/v2.3.1/lighthouse-v2.3.1-x86_64-unknown-linux-gnu.tar.gz>
tar xvf lighthouse-v2.3.1-x86_64-unknown-linux-gnu.tar.gz
rm lighthouse-v2.3.1-x86_64-unknown-linux-gnu.tar.gz

Install globally:

sudo cp ~/lighthouse /usr/local/bin
rm ~/lighthouse

{% endtab %}

{% tab title="Teku" %} +You can install Teku +following their docs. \ +Quick guide how to install Teku using binary distribution:\

Check if Java is already installed on Your machine:

Java --version

if not You can use this command to install it:

sudo apt install default-jdk

Then, download Teku and extract it (currently latest version is 22.8.1):

wget https://artifacts.consensys.net/public/teku/raw/names/teku.tar.gz/versions/22.8.1/teku-22.8.1.tar.gz
tar xvf teku-22.8.1.tar.gz
rm teku-22.8.1.tar.gz

Install globally:

sudo cp -r teku-22.8.1 /usr/local/binrm teku-22.8.1

{% endtab %} +{% endtabs %}

Configuration

It is recommended to run the consensus and execution client as a systemd service, which will allow the two processes run +in the background and start up again if your machine restarts, improving reliability and uptime of your validator. This +is not as crucial for running testnet validators and you can +follow this guide on +how to connect to testnets with Nethermind and other consensus clients.

Create a dedicated user for Nethermind. This will set up the correct permissions and directory where the chain data is +stored.

sudo useradd -m -s /bin/false nethermindeth
sudo mkdir -p /var/lib/nethermind
sudo chown -R nethermindeth:nethermindeth /var/lib/nethermind
sudo chown -R nethermindeth:nethermindeth /usr/share/nethermind

Create a JWT Token which will be used to communicate between consensus and execution clients. For more information about +JWT Token please refer +to this section.

openssl rand -hex 32 | tr -d "\n" > "/var/lib/nethermind/jwt-secret"

Create a systemd config file. This will run Nethermind as a systemd service on your machine.

sudo nano /etc/systemd/system/nethermind.service

Paste the following service configuration into the file

[Unit]
Description=Nethermind Ethereum Client
After=network.target
Wants=network.target

[Service]
User=nethermindeth
Group=nethermindeth
Type=simple
Restart=always
RestartSec=5
TimeoutStopSec=180
WorkingDirectory=/home/nethermindeth
ExecStart=/usr/share/nethermind/Nethermind.Runner \
--config mainnet \
--Init.BaseDbPath /var/lib/nethermind \
--JsonRpc.Enabled true \
--JsonRpc.EngineHost "0.0.0.0" \
--JsonRpc.EnginePort 8551 \
--JsonRpc.JwtSecretFile /var/lib/nethermind/jwt-secret

[Install]
WantedBy=default.target

To close and save the file, press Ctrl+ X, Y, Enter.

Reload systemd to reflect the changes and start the nethermind service. The status should say active in green text. If +not, repeat the configuration steps and see if it resolves the problem

sudo systemctl daemon-reload
sudo systemctl start nethermind.service
sudo systemctl status nethermind.service

Press Q to quit viewing the status. Enable the nethermind service to automatically start on reboot:

sudo systemctl enable nethermind.service

To see the Nethermind logs:

sudo journalctl -f -u nethermind.service -o cat | ccze -A

Press Ctrl + C to stop showing those messages.

info

If any path from sample would be changed (like "Init.baseDbPath") please ensure that You set newly added user as a owner +of this directory and execute "systemctl restart nethermind.service" command.

Now repeat the process to run a CL beacon chain:

{% tabs %} +{% tab title="Lighthouse" %}

sudo useradd --no-create-home --shell /bin/false lighthousebeaconsudo mkdir -p /var/lib/lighthouse sudo chown -R lighthousebeacon:lighthousebeacon /var/lib/lighthouse

Add systemd file:

sudo nano /etc/systemd/system/lighthousebeacon.service

Paste the following in:

[Unit]
Description=Lighthouse Ethereum Client Beacon Node
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=lighthousebeacon
Group=lighthousebeacon
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/lighthouse bn \\
--network mainnet \\
--datadir /var/lib/lighthouse \\
--staking \\
--http-allow-sync-stalled \\
--merge \\
--execution-endpoints <http://127.0.0.1:8551> \\
--metrics-explanation \\
--validator-monitor-auto \\
--jwt-secrets="/var/lib/nethermind/jwt-secret"

[Install]
WantedBy=multi-user.target

The beacon node needs to share something called a JWT secret with Nethermind, so let the secret be accessible to all +users:

sudo chmod +r /var/lib/nethermind/jwt-secret

Reload and start the lighthouse node. The status should say active in green text if running correctly. If not, repeat +the configuration steps and see if it resolves the problem.

sudo systemctl daemon-reload
sudo systemctl start lighthousebeacon.service
sudo systemctl status lighthousebeacon.service

Enable the Lighthouse beacon node service to automatically start on reboot.

sudo systemctl enable lighthousebeacon.service

You can watch the logs from your Lighthouse beacon node using this command. Lighthouse may show errors if Nethermind is +not synced, so wait until Nethermind is synced to see if the errors persist.

sudo journalctl -f -u lighthousebeacon.service -o cat | ccze -A

Press Ctrl + C to stop showing those messages. +{% endtab %}

{% tab title="Teku" %}

sudo useradd --no-create-home --shell /bin/false tekubeacon
sudo mkdir -p /var/lib/teku
sudo chown -R tekubeacon:tekubeacon /var/lib/teku

Add systemd file:

sudo nano /etc/systemd/system/tekubeacon.service

Paste the following in (make sure to replace the 0x0000000000000000000000000000000000000000 address with your own +Ethereum address where you want to receive the proceeds from transaction fees (post merge)):

[Unit]
Description=Teku Ethereum Client Beacon Node
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=tekubeacon
Group=tekubeacon
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/teku-22.8.1 \
--network mainnet \
--data-path /var/lib/teku/datadir-teku \
--ee-endpoint http://localhost:8551 \
--ee-jwt-secret-file /var/lib/nethermind/jwt-secret \
--rest-api-enabled
--validators-proposer-default-fee-recipient=0x0000000000000000000000000000000000000000

[Install]
WantedBy=multi-user.target

The beacon node needs to share something called a JWT secret with Nethermind, so let the secret be accessible to all +users:

sudo chmod +r /var/lib/nethermind/jwt-secret

Reload and start the lighthouse node. The status should say active in green text if running correctly. If not, repeat +the configuration steps and see if it resolves the problem.

sudo systemctl daemon-reload
sudo systemctl start tekubeacon.service
sudo systemctl status tekubeacon.service

Enable the Teku beacon node service to automatically start on reboot.

sudo systemctl enable tekubeacon.service

You can watch the logs from your Teku beacon node using this command. Teku may show errors if Nethermind is not synced, +so wait until Nethermind is synced to see if the errors persist.

sudo journalctl -f -u tekubeacon.service -o cat | ccze -A

Press Ctrl + C to stop showing those messages. +{% endtab %} +{% endtabs %}

Syncing your node

The execution client still stores the blockchain state from the old proof of work chain, so it can take days to weeks to +fully sync with the network, depending on your sync mode, hardware and network. The consensus client will also typically +take a few days to fully sync on mainnet.

Please ensure both processes are synced before running your validator. Without the latest state your validator will not +be able to vote and earn rewards on the proof of stake chain.

{% tabs %} +{% tab title="Nethermind" %} +A Nethermind node should be synced if the logs no longer say it is downloading blocks. Post merge, new payloads from the +consensus client should display VALID instead of SYNCING in the logs.

Running a Validator

Generating Validator Keys

You will need to generate keys for your validator. These keys are the ONLY way to withdraw your funds after staking your +ETH, so you have to ensure you have backed up your keys. There are two options:

  • staking-deposit-cli - recommended for those comfortable with the +command line
  • Wagyu Key Gen - desktop app, choose the correct network (mainnet, +kiln) to generate your validator keys

Staking deposit cli

Copy the following commands into your terminal to download the cli and generate your keys. Change num_validators +and chain to the number of validators and / or testnet name you want to run.

wget <https://github.com/ethereum/staking-deposit-cli/releases/download/v2.3.0/staking_deposit-cli-76ed782-linux-amd64.tar.gz>
tar xvf staking_deposit-cli-9ab0b05-linux-amd64.tar.gz
cd staking_deposit-cli-9ab0b05-linux-amd64/
./deposit new-mnemonic --num_validators 1 --chain mainnet

Above should result with small structure created:

  1. main directory (starts with "staking_")
    1. keys directory
      1. keystore json file
      2. deposit_data json file
    2. deposit file

A keystore file will be used later on to start Validator client on machine.

A deposit_data file will be used for launchpad to confirm Identity and send 32 ETH which will be used for Validator +purpose.

Wagyu Key Gen

Download wagyu from their website and select the download compatible with your operating system.

Clicking on the top right corner you can select the network you want to generate your keys for. If not connecting to a +testnet, let the network default to mainnet.

Click on ‘Create New Secret Recovery Phrase’ and you will be taken through the process of generating a 24 word secret to +generate your validator keys. The number of keys you generate should match the number of validators you intend to run.

When finished you should end up with a deposit file (starts with deposit_data-and ends with .json) and a keystore +file (starts with keystore-and ends with .json) per validator from both methods.

Depositing ETH

Next you will need to deposit ETH into the deposit contract. One validator requires 32 ETH to run. Go +to the mainnet launchpad to use your wallet and your deposit file to perform the +deposit. The launchpad will go through similar instructions as this guide to ensure you have performed them.

Depositing on Testnets

You will need testnet ETH in order to run a validator.

{% tabs %} +{% tab title="Kiln" %} +Go to the official Kiln website and click on the Add network to MetaMask button.

Get testnet ETH:

Go to the launchpad and follow the instructions:

Check the status of your validator on the beacon chain:

{% tab title="Ropsten" %} +Get testnet ETH:

The ethstaker community discord can provide testnet ETH if you don’t have enough to deposit 32 +ETH.

Go to the launchpad and follow the instructions:

Check the status of your validator on the beacon chain:

{% tab title="Goerli" %} +Get testnet ETH:

Go to the launchpad and follow the instructions:

Check the status of your validator on the beacon chain:

Configuring a Validator

DO NOT run two validators with the same keys. This can lead to your validator signing two different blocks and lead +to slashing which will significantly reduce your staked +ETH.

Like configuring your consensus and execution client, create a dedicated user for your validator:

{% tabs %} +{% tab title="Lighthouse" %}

sudo useradd --no-create-home --shell /bin/false lighthousevalidator
sudo mkdir -p /var/lib/lighthouse/validators
sudo chown -R lighthousevalidator:lighthousevalidator /var/lib/lighthouse/validators
sudo chmod 700 /var/lib/lighthouse/validators

{% endtab %}

{% tab title="Teku" %}

sudo useradd --no-create-home --shell /bin/false tekuvalidator
sudo mkdir -p /home/tekuvalidator
sudo chown -R tekuvalidator:tekuvalidator /home/tekuvalidator

Also ensure that new user has access to keystore files:

sudo chown -R tekuvalidator:tekuvalidator /path/to/keystores

{% endtab %} +{% endtabs %}

Below there is a description on how to start Validator service for various CL on Your machine.

{% tabs %} +{% tab title="Lighthouse" %} +The keystore file (generated previously and starts with keystore- ) needs to be imported for the Lighthouse validator +client. Replace /path/to/keystores with the absolute path you saved your keystore file.

sudo /usr/local/bin/lighthouse account validator import \\
--directory /path/to/keystores \\
--datadir /var/lib/lighthouse \\
--network mainnet
sudo chown -R lighthousevalidator:lighthousevalidator /var/lib/lighthouse/validators

The command will prompt for your keystore password.

Create the systemd file:

sudo nano /etc/systemd/system/lighthousevalidator.service

Paste the following configuration into the file. Make sure to replace the 0x0000000000000000000000000000000000000000 +address with your own Ethereum address where you want to receive the proceeds from transaction fees (post merge).

[Unit]
Description=Lighthouse Ethereum Client Validator Client
Wants=network-online.target
After=network-online.target

[Service]
User=lighthousevalidator
Group=lighthousevalidator
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/lighthouse vc \\
--network mainnet \\
--datadir /var/lib/lighthouse \\
--metrics-explanation \\
--suggested-fee-recipient 0x0000000000000000000000000000000000000000

[Install]
WantedBy=multi-user.target

Reload systemd to reflect the changes and start the service. Check the status to make sure it’s running correctly.

sudo systemctl daemon-reload
sudo systemctl start lighthousevalidator.service
sudo systemctl status lighthousevalidator.service

Enable the Lighthouse validator client service to automatically start on reboot.

sudo systemctl enable lighthousevalidator.service

You can watch the live messages from your Lighthouse validator client logs using this command.

sudo journalctl -f -u lighthousevalidator.service -o cat | ccze -A

Press Ctrl + C to stop showing those messages +{% endtab %}

{% tab title="Teku" %} +In Teku at first we need to create a file with password used during creation of Validator Keys. In order to do that, +navigate to the path, where keys created +on #generating-validator-keys are stored.

Then on keys directory level create a separate directory called passwords. Result should be two directories keys +and passwords on the same level under staking main directory.

In passwords directory we need to create txt file which will have exactly the same name as keystore json file. +Result should be:

  1. keys
    1. keystore.json
  2. passwords
    1. keystore.txt

Now, in keystore.txt user needs to put password used for creation of Validator Keys and save this file.

Then You can proceed to creation of Validator service. In order to do that, create systemd file:

sudo nano /etc/systemd/system/tekuvalidator.service

Paste the following configuration into the file. Make sure to replace the 0x0000000000000000000000000000000000000000 +address with your own Ethereum address where you want to receive the proceeds from transaction fees (post merge).

Also make sure that You replace /path/to/keystores to path, where Validator Keys are stored.

[Unit]
Description=TekuEthereum Client Validator Client
Wants=network-online.target
After=network-online.target

[Service]
User=tekuvalidator
Group=tekuvalidator
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/teku-22.8.1/bin/teku validator-client \
--beacon-node-api-endpoint=http://127.0.0.1:5051 \
--validator-keys=/path/to/keystores/staking/keys/keystore.json:/path/to/keystores/staking/passwords/keystore.txt \
--network mainnet\
--validators-proposer-default-fee-recipient=0x0000000000000000000000000000000000000000

[Install]
WantedBy=multi-user.target

Reload systemd to reflect the changes and start the service. Check the status to make sure it’s running correctly.

sudo systemctl daemon-reload
sudo systemctl start tekuvalidator.service
sudo systemctl status tekuvalidator.service

Enable the Teku validator client service to automatically start on reboot.

sudo systemctl enable tekuvalidator.service

You can watch the live messages from your Teku validator client logs using this command.

sudo journalctl -f -u tekuvalidator.service -o cat | ccze -A

Press Ctrl + C to stop showing those messages +{% endtab %} +{% endtabs %}

Validator Tips and Tricks

Go through the checklist by the Ethereum foundation for some ways to +improve security and optimise your validator rewards. For example:

  • Setting +up a firewall +and forward ports 30303 (Nethermind P2P) and 9000 (Lighthouse P2P) to prevent malicious external actors accessing your +node
  • Ensure the time on your +node is synced
  • Adding monitoring dashboards +for Nethermind +and Lighthouse to view real time metrics of your consensus and execution +client
  • Using a VPN to protect the privacy of your validator
  • Add an optional --graffiti flag that adds a message to the blocks your validator proposes, publicly viewable on the +beacon chain

Monitoring

To maximise your validator rewards, ensure that your node is always running and online. Downloading +the Beacon Chain mobile app will allow you to monitor and set up alerts when your +validator is offline or not earning rewards. You can also make an account on +the Beacon Chain explorer and set up email alerts.

If you receive an alert check your machine is connected to the internet and restart your services:

sudo systemctl restart nethermind.service
sudo systemctl restart lighthousebeacon.service
sudo systemctl restart lighthousevalidator.service

Credits

Based on ethstaker’s guide to connecting to kiln +testnet.

+ + + + \ No newline at end of file diff --git a/docs/resources/know-issues.html b/docs/resources/know-issues.html new file mode 100644 index 000000000..c43f89a11 --- /dev/null +++ b/docs/resources/know-issues.html @@ -0,0 +1,48 @@ + + + + + +Known Issues | Nethermind Documentation + + + + + +
+

Known Issues

RocksDB checksum issue

Sometimes RocksDB may fail with an exception similar to the one below:

2020-11-29 12:02:01.1968|BlockchainProcessor encountered an exception. RocksDbSharp.RocksDbException: Corruption: block +checksum mismatch: expected 2087346143, got 2983326672 in C:\Nethermind\nethermind_db/mainnet\state/037463.sst offset +33439089 size 16319

On XFS file system under very high memory pressure, this tend to happen. Turning on the +flag --Db.UseDirectIoForFlushAndCompactions truewill help, although it might reduce performance.

On most cases however, this is due to RAM module issue. Please run memtest86 to check your +memory module.

Database LOCK files not removed by RocksDB

If the node complains about the LOCK files it may mean one of the two things:

(1) another Nethermind process is running and using the same DB

(2) previous process did not close the DB properly

When (2) happens you can run

find . -type f -name 'LOCK' -delete

in the database folder.

Leaking Socket Descriptors

On Linux our networking library is not closing socket descriptors properly. This results in the number of open files for +the process growing indefinitely. Limits for the number of open files per process are different for root and other +users. For root the limits are usually very high and the socket descriptors would probably not cause much trouble. Many +of the cloud operators are launching VMs with root user access by default. If Nethermind process is frequently killed by +OS then you may need to change the configuration for the maximum number of open files.

RocksDB on macOS

RocksDB library does not always load properly on macOS. One (hacky) workaround is to install the latest version of +RocksDB by running brew install rocksdb.

Skipping consensus issues blocks

We do our best in Nethermind not to have consensus issues with other clients. But historically consensus issues had +happened. In that case we start working on a hotfix immediately and release it within hours time. If you need your node +to be operational ASAP and can’t wait for hotfix you do have an option to achieve that. Nethermind node allows you to +fast sync to recent blocks and state. When node does fast sync it can skip over processing problematic blocks. In order +to be able to fast sync we need SyncConfig.FastSync to be set to ‘true’. You also need to set +SyncConfig.FastSyncCatchUpHeightDelta to a value lower than how far your node is behind the chain. +SyncConfig.FastSyncCatchUpHeightDelta is the minimum difference between current chain height and chain head block number +when node can switch from full sync (block processing) to fast sync. By default it is set to 1024. Please note that we +don’t recommend setting this value to less than 32 in normal circumstances. After setting those values and restarting +node, the node will download block headers, bodies (if SyncConfig.DownloadBodiesInFastSync is ‘true’), receipts (if +SyncConfig.DownloadReceiptsInFastSync is ‘true’) and current state. After that it will resume processing from new head +block. Please note that the historical state for skipped blocks might not be available. This can cause some JSON RPC +calls on the historical state not to work - same situation as if these blocks state was pruned.

For example if current chain head block number is 10,000,100 and node couldn’t process block 10,000,000 due to consensus +issue, if you set FastSync:true and FastSyncCatchUpHeightDelta:100 (or as low as 32) and node should switch to fast +sync, catch up with current chain head and switch back to full sync.

The time that it will take to fast sync to current chain head can take even up to 2 hours depending how many blocks and +how much new state there is to be downloaded.

ETH2 issues

Main issues reported so far when using Nethermind for Eth2 (30.11.2020)

caution
  • users who synced before version 1.9.41 and were not aware that old configs were not supporting Eth2 by default +had to resync with 1.9.41 (and they are reporting successful setups now)
  • users who synced with AncientReceiptsBarrier (limiting disk space) cannot use Teku and have to switch to * +*Prysm or Lighthouse**
  • two users reported that their fully synced nodes on Windows 10 Pro failed after a few blocks (please let us know if +you have seen a similar issue)
  • (fixed in 1.9.45) users are reporting issues on a hard shutdown of VMs / machines with Nethermind running - some +database corruptions occur often requiring a resync
  • users had trouble to sync node on a ZFS file system but this has been resolved after removing ZFS
  • users reported an issue where RocksDB was displaying a checksum mismatch error in the logs -> restarting a VM (not +Nethermind, but the machine) helped
  • if you tried to launch Lighthouse with the old Nethermind (pre 1.9.41) which failed and then resynced Nethermind +and you are still getting errors then wiping the Lighthouse DB and starting again will solve it. +:::
+ + + + \ No newline at end of file diff --git a/img/1845600783.jpg b/img/1845600783.jpg new file mode 100644 index 000000000..3c85d1434 Binary files /dev/null and b/img/1845600783.jpg differ diff --git a/img/2022-08-30_13h29_58(1).png b/img/2022-08-30_13h29_58(1).png new file mode 100644 index 000000000..d7d092871 Binary files /dev/null and b/img/2022-08-30_13h29_58(1).png differ diff --git a/img/2022-08-30_13h29_58.png b/img/2022-08-30_13h29_58.png new file mode 100644 index 000000000..d7d092871 Binary files /dev/null and b/img/2022-08-30_13h29_58.png differ diff --git a/img/Direction=Horizontal,Color=Color,Wordmark=Yes.svg b/img/Direction=Horizontal,Color=Color,Wordmark=Yes.svg new file mode 100644 index 000000000..a2304817c --- /dev/null +++ b/img/Direction=Horizontal,Color=Color,Wordmark=Yes.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/Nethermind_Background-07.png b/img/Nethermind_Background-07.png new file mode 100644 index 000000000..cfa8b2020 Binary files /dev/null and b/img/Nethermind_Background-07.png differ diff --git a/img/Nethermind_Docs.png b/img/Nethermind_Docs.png new file mode 100644 index 000000000..4363a2b32 Binary files /dev/null and b/img/Nethermind_Docs.png differ diff --git a/img/ScreenShot2022-06-15at4.30.51pm(1).png b/img/ScreenShot2022-06-15at4.30.51pm(1).png new file mode 100644 index 000000000..d9d418424 Binary files /dev/null and b/img/ScreenShot2022-06-15at4.30.51pm(1).png differ diff --git a/img/ScreenShot2022-06-15at4.30.51pm.png b/img/ScreenShot2022-06-15at4.30.51pm.png new file mode 100644 index 000000000..d9d418424 Binary files /dev/null and b/img/ScreenShot2022-06-15at4.30.51pm.png differ diff --git a/img/ScreenShot2022-06-15at4.33.12pm.png b/img/ScreenShot2022-06-15at4.33.12pm.png new file mode 100644 index 000000000..412da1393 Binary files /dev/null and b/img/ScreenShot2022-06-15at4.33.12pm.png differ diff --git a/img/ScreenShot2022-06-15at9.12.21am.png b/img/ScreenShot2022-06-15at9.12.21am.png new file mode 100644 index 000000000..59ef18000 Binary files /dev/null and b/img/ScreenShot2022-06-15at9.12.21am.png differ diff --git a/img/ScreenShot2022-06-15at9.20.16am.png b/img/ScreenShot2022-06-15at9.20.16am.png new file mode 100644 index 000000000..45538d8d0 Binary files /dev/null and b/img/ScreenShot2022-06-15at9.20.16am.png differ diff --git a/img/ScreenShot2022-06-15at9.40.05am.png b/img/ScreenShot2022-06-15at9.40.05am.png new file mode 100644 index 000000000..d93079b7c Binary files /dev/null and b/img/ScreenShot2022-06-15at9.40.05am.png differ diff --git a/img/Screenshot2022-08-10205144.png b/img/Screenshot2022-08-10205144.png new file mode 100644 index 000000000..b3df354a5 Binary files /dev/null and b/img/Screenshot2022-08-10205144.png differ diff --git a/img/Untitled(1).png b/img/Untitled(1).png new file mode 100644 index 000000000..28b60f75c Binary files /dev/null and b/img/Untitled(1).png differ diff --git a/img/Untitled.png b/img/Untitled.png new file mode 100644 index 000000000..28b60f75c Binary files /dev/null and b/img/Untitled.png differ diff --git a/img/Vertical_04(1).svg b/img/Vertical_04(1).svg new file mode 100644 index 000000000..a205ea758 --- /dev/null +++ b/img/Vertical_04(1).svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/Vertical_04(2).svg b/img/Vertical_04(2).svg new file mode 100644 index 000000000..f1a56fccb --- /dev/null +++ b/img/Vertical_04(2).svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/Vertical_04(3).svg b/img/Vertical_04(3).svg new file mode 100644 index 000000000..ebee2a370 --- /dev/null +++ b/img/Vertical_04(3).svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/Vertical_04(4).svg b/img/Vertical_04(4).svg new file mode 100644 index 000000000..a205ea758 --- /dev/null +++ b/img/Vertical_04(4).svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/Vertical_04.svg b/img/Vertical_04.svg new file mode 100644 index 000000000..71d1a5256 --- /dev/null +++ b/img/Vertical_04.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/creation-infra.gif b/img/creation-infra.gif new file mode 100644 index 000000000..532a46efc Binary files /dev/null and b/img/creation-infra.gif differ diff --git a/img/docusaurus-social-card.jpg b/img/docusaurus-social-card.jpg new file mode 100644 index 000000000..ffcb44821 Binary files /dev/null and b/img/docusaurus-social-card.jpg differ diff --git a/img/docusaurus.png b/img/docusaurus.png new file mode 100644 index 000000000..f458149e3 Binary files /dev/null and b/img/docusaurus.png differ diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 000000000..4cffbd73d Binary files /dev/null and b/img/favicon.ico differ diff --git a/img/getting_started_0.png b/img/getting_started_0.png new file mode 100644 index 000000000..67f2e5164 Binary files /dev/null and b/img/getting_started_0.png differ diff --git a/img/getting_started_1.png b/img/getting_started_1.png new file mode 100644 index 000000000..12ffc407f Binary files /dev/null and b/img/getting_started_1.png differ diff --git a/img/getting_started_2.png b/img/getting_started_2.png new file mode 100644 index 000000000..463b71361 Binary files /dev/null and b/img/getting_started_2.png differ diff --git a/img/getting_started_26.png b/img/getting_started_26.png new file mode 100644 index 000000000..3c5bf524d Binary files /dev/null and b/img/getting_started_26.png differ diff --git a/img/getting_started_3.png b/img/getting_started_3.png new file mode 100644 index 000000000..a1c49f614 Binary files /dev/null and b/img/getting_started_3.png differ diff --git a/img/getting_started_33.png b/img/getting_started_33.png new file mode 100644 index 000000000..18e7a0385 Binary files /dev/null and b/img/getting_started_33.png differ diff --git a/img/getting_started_4.png b/img/getting_started_4.png new file mode 100644 index 000000000..d2a38a1d6 Binary files /dev/null and b/img/getting_started_4.png differ diff --git a/img/getting_started_7.png b/img/getting_started_7.png new file mode 100644 index 000000000..4eeb5658f Binary files /dev/null and b/img/getting_started_7.png differ diff --git a/img/getting_started_8.png b/img/getting_started_8.png new file mode 100644 index 000000000..00aa41d88 Binary files /dev/null and b/img/getting_started_8.png differ diff --git a/img/getting_started_9.png b/img/getting_started_9.png new file mode 100644 index 000000000..b1be5c310 Binary files /dev/null and b/img/getting_started_9.png differ diff --git a/img/getting_started_log_0.png b/img/getting_started_log_0.png new file mode 100644 index 000000000..866375212 Binary files /dev/null and b/img/getting_started_log_0.png differ diff --git a/img/image(1)(1).png b/img/image(1)(1).png new file mode 100644 index 000000000..a99c09503 Binary files /dev/null and b/img/image(1)(1).png differ diff --git a/img/image(1).png b/img/image(1).png new file mode 100644 index 000000000..fc2fcffe2 Binary files /dev/null and b/img/image(1).png differ diff --git a/img/image(10)(1)(1)(1)(1).png b/img/image(10)(1)(1)(1)(1).png new file mode 100644 index 000000000..08b8cc3dc Binary files /dev/null and b/img/image(10)(1)(1)(1)(1).png differ diff --git a/img/image(10)(1)(1)(1).png b/img/image(10)(1)(1)(1).png new file mode 100644 index 000000000..08b8cc3dc Binary files /dev/null and b/img/image(10)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(1).png b/img/image(10)(1)(4)(4)(4)(1)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(2).png b/img/image(10)(1)(4)(4)(4)(1)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1)(3).png b/img/image(10)(1)(4)(4)(4)(1)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(1).png b/img/image(10)(1)(4)(4)(4)(1).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(1).png differ diff --git a/img/image(10)(1)(4)(4)(4)(2).png b/img/image(10)(1)(4)(4)(4)(2).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(2).png differ diff --git a/img/image(10)(1)(4)(4)(4)(3).png b/img/image(10)(1)(4)(4)(4)(3).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(3).png differ diff --git a/img/image(10)(1)(4)(4)(4)(4).png b/img/image(10)(1)(4)(4)(4)(4).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4)(4).png differ diff --git a/img/image(10)(1)(4)(4)(4).png b/img/image(10)(1)(4)(4)(4).png new file mode 100644 index 000000000..36d463800 Binary files /dev/null and b/img/image(10)(1)(4)(4)(4).png differ diff --git a/img/image(100).png b/img/image(100).png new file mode 100644 index 000000000..1bcad9e75 Binary files /dev/null and b/img/image(100).png differ diff --git a/img/image(101).png b/img/image(101).png new file mode 100644 index 000000000..40015156d Binary files /dev/null and b/img/image(101).png differ diff --git a/img/image(102).png b/img/image(102).png new file mode 100644 index 000000000..967ca94df Binary files /dev/null and b/img/image(102).png differ diff --git a/img/image(103).png b/img/image(103).png new file mode 100644 index 000000000..e65dca490 Binary files /dev/null and b/img/image(103).png differ diff --git a/img/image(104).png b/img/image(104).png new file mode 100644 index 000000000..ca21371ff Binary files /dev/null and b/img/image(104).png differ diff --git a/img/image(105).png b/img/image(105).png new file mode 100644 index 000000000..fdd2f5729 Binary files /dev/null and b/img/image(105).png differ diff --git a/img/image(106).png b/img/image(106).png new file mode 100644 index 000000000..3af082807 Binary files /dev/null and b/img/image(106).png differ diff --git a/img/image(107).png b/img/image(107).png new file mode 100644 index 000000000..ca110851b Binary files /dev/null and b/img/image(107).png differ diff --git a/img/image(108).png b/img/image(108).png new file mode 100644 index 000000000..b8db51603 Binary files /dev/null and b/img/image(108).png differ diff --git a/img/image(109).png b/img/image(109).png new file mode 100644 index 000000000..690b3d3d4 Binary files /dev/null and b/img/image(109).png differ diff --git a/img/image(11).png b/img/image(11).png new file mode 100644 index 000000000..4e5b29aad Binary files /dev/null and b/img/image(11).png differ diff --git a/img/image(110).png b/img/image(110).png new file mode 100644 index 000000000..47f23e24d Binary files /dev/null and b/img/image(110).png differ diff --git a/img/image(111).png b/img/image(111).png new file mode 100644 index 000000000..720c97bec Binary files /dev/null and b/img/image(111).png differ diff --git a/img/image(112)(1).png b/img/image(112)(1).png new file mode 100644 index 000000000..4d609baee Binary files /dev/null and b/img/image(112)(1).png differ diff --git a/img/image(112).png b/img/image(112).png new file mode 100644 index 000000000..4d609baee Binary files /dev/null and b/img/image(112).png differ diff --git a/img/image(113).png b/img/image(113).png new file mode 100644 index 000000000..e7cc4fa3c Binary files /dev/null and b/img/image(113).png differ diff --git a/img/image(114).png b/img/image(114).png new file mode 100644 index 000000000..d450d37bb Binary files /dev/null and b/img/image(114).png differ diff --git a/img/image(115).png b/img/image(115).png new file mode 100644 index 000000000..3cf88571d Binary files /dev/null and b/img/image(115).png differ diff --git a/img/image(116).png b/img/image(116).png new file mode 100644 index 000000000..e9b5b7c05 Binary files /dev/null and b/img/image(116).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(1).png b/img/image(117)(2)(3)(3)(2)(1)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(2).png b/img/image(117)(2)(3)(3)(2)(1)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(3).png b/img/image(117)(2)(3)(3)(2)(1)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(4).png b/img/image(117)(2)(3)(3)(2)(1)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1)(5).png b/img/image(117)(2)(3)(3)(2)(1)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(1).png b/img/image(117)(2)(3)(3)(2)(1).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(1).png differ diff --git a/img/image(117)(2)(3)(3)(2)(2)(4).png b/img/image(117)(2)(3)(3)(2)(2)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(2)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(2)(5).png b/img/image(117)(2)(3)(3)(2)(2)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(2)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(2).png b/img/image(117)(2)(3)(3)(2)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(2).png differ diff --git a/img/image(117)(2)(3)(3)(2)(3).png b/img/image(117)(2)(3)(3)(2)(3).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(3).png differ diff --git a/img/image(117)(2)(3)(3)(2)(4).png b/img/image(117)(2)(3)(3)(2)(4).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(4).png differ diff --git a/img/image(117)(2)(3)(3)(2)(5).png b/img/image(117)(2)(3)(3)(2)(5).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(5).png differ diff --git a/img/image(117)(2)(3)(3)(2)(6).png b/img/image(117)(2)(3)(3)(2)(6).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2)(6).png differ diff --git a/img/image(117)(2)(3)(3)(2).png b/img/image(117)(2)(3)(3)(2).png new file mode 100644 index 000000000..457cad0e3 Binary files /dev/null and b/img/image(117)(2)(3)(3)(2).png differ diff --git a/img/image(117).png b/img/image(117).png new file mode 100644 index 000000000..9bbc8c48f Binary files /dev/null and b/img/image(117).png differ diff --git a/img/image(118)(1)(1)(1)(1).png b/img/image(118)(1)(1)(1)(1).png new file mode 100644 index 000000000..9d4b25541 Binary files /dev/null and b/img/image(118)(1)(1)(1)(1).png differ diff --git a/img/image(118)(1)(1)(1).png b/img/image(118)(1)(1)(1).png new file mode 100644 index 000000000..9d4b25541 Binary files /dev/null and b/img/image(118)(1)(1)(1).png differ diff --git a/img/image(118).png b/img/image(118).png new file mode 100644 index 000000000..86335f52e Binary files /dev/null and b/img/image(118).png differ diff --git a/img/image(119).png b/img/image(119).png new file mode 100644 index 000000000..d744e5b83 Binary files /dev/null and b/img/image(119).png differ diff --git a/img/image(12).png b/img/image(12).png new file mode 100644 index 000000000..b0d15b753 Binary files /dev/null and b/img/image(12).png differ diff --git a/img/image(120).png b/img/image(120).png new file mode 100644 index 000000000..c4e595b2b Binary files /dev/null and b/img/image(120).png differ diff --git a/img/image(121).png b/img/image(121).png new file mode 100644 index 000000000..9403a1936 Binary files /dev/null and b/img/image(121).png differ diff --git a/img/image(122).png b/img/image(122).png new file mode 100644 index 000000000..1ce9473e9 Binary files /dev/null and b/img/image(122).png differ diff --git a/img/image(123).png b/img/image(123).png new file mode 100644 index 000000000..ea53c5c5f Binary files /dev/null and b/img/image(123).png differ diff --git a/img/image(124).png b/img/image(124).png new file mode 100644 index 000000000..c2c01c25d Binary files /dev/null and b/img/image(124).png differ diff --git a/img/image(125).png b/img/image(125).png new file mode 100644 index 000000000..023f04c6c Binary files /dev/null and b/img/image(125).png differ diff --git a/img/image(126).png b/img/image(126).png new file mode 100644 index 000000000..32f5dd3d6 Binary files /dev/null and b/img/image(126).png differ diff --git a/img/image(127).png b/img/image(127).png new file mode 100644 index 000000000..ee69aed59 Binary files /dev/null and b/img/image(127).png differ diff --git a/img/image(128).png b/img/image(128).png new file mode 100644 index 000000000..fad0d87e8 Binary files /dev/null and b/img/image(128).png differ diff --git a/img/image(129).png b/img/image(129).png new file mode 100644 index 000000000..d3a56f57c Binary files /dev/null and b/img/image(129).png differ diff --git a/img/image(13).png b/img/image(13).png new file mode 100644 index 000000000..0dede3879 Binary files /dev/null and b/img/image(13).png differ diff --git a/img/image(130).png b/img/image(130).png new file mode 100644 index 000000000..4058b957d Binary files /dev/null and b/img/image(130).png differ diff --git a/img/image(131).png b/img/image(131).png new file mode 100644 index 000000000..34d61b104 Binary files /dev/null and b/img/image(131).png differ diff --git a/img/image(132).png b/img/image(132).png new file mode 100644 index 000000000..c5619104c Binary files /dev/null and b/img/image(132).png differ diff --git a/img/image(133).png b/img/image(133).png new file mode 100644 index 000000000..5b04bb649 Binary files /dev/null and b/img/image(133).png differ diff --git a/img/image(134).png b/img/image(134).png new file mode 100644 index 000000000..8cf356d4b Binary files /dev/null and b/img/image(134).png differ diff --git a/img/image(135).png b/img/image(135).png new file mode 100644 index 000000000..9040c3a24 Binary files /dev/null and b/img/image(135).png differ diff --git a/img/image(136).png b/img/image(136).png new file mode 100644 index 000000000..d4d7c1c85 Binary files /dev/null and b/img/image(136).png differ diff --git a/img/image(137).png b/img/image(137).png new file mode 100644 index 000000000..58af21e57 Binary files /dev/null and b/img/image(137).png differ diff --git a/img/image(138).png b/img/image(138).png new file mode 100644 index 000000000..513b358da Binary files /dev/null and b/img/image(138).png differ diff --git a/img/image(139).png b/img/image(139).png new file mode 100644 index 000000000..864a15b32 Binary files /dev/null and b/img/image(139).png differ diff --git a/img/image(14).png b/img/image(14).png new file mode 100644 index 000000000..f774d7d7b Binary files /dev/null and b/img/image(14).png differ diff --git a/img/image(140).png b/img/image(140).png new file mode 100644 index 000000000..722e7a320 Binary files /dev/null and b/img/image(140).png differ diff --git a/img/image(141)(1).png b/img/image(141)(1).png new file mode 100644 index 000000000..a6fa60578 Binary files /dev/null and b/img/image(141)(1).png differ diff --git a/img/image(141).png b/img/image(141).png new file mode 100644 index 000000000..89fa6e417 Binary files /dev/null and b/img/image(141).png differ diff --git a/img/image(142).png b/img/image(142).png new file mode 100644 index 000000000..0965ed9b7 Binary files /dev/null and b/img/image(142).png differ diff --git a/img/image(143).png b/img/image(143).png new file mode 100644 index 000000000..3ac5114ae Binary files /dev/null and b/img/image(143).png differ diff --git a/img/image(144)(1)(1)(1)(1)(1).png b/img/image(144)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..a75b9503b Binary files /dev/null and b/img/image(144)(1)(1)(1)(1)(1).png differ diff --git a/img/image(144)(1)(1)(1)(1).png b/img/image(144)(1)(1)(1)(1).png new file mode 100644 index 000000000..a75b9503b Binary files /dev/null and b/img/image(144)(1)(1)(1)(1).png differ diff --git a/img/image(145)(1).png b/img/image(145)(1).png new file mode 100644 index 000000000..0406b9364 Binary files /dev/null and b/img/image(145)(1).png differ diff --git a/img/image(145).png b/img/image(145).png new file mode 100644 index 000000000..0406b9364 Binary files /dev/null and b/img/image(145).png differ diff --git a/img/image(146).png b/img/image(146).png new file mode 100644 index 000000000..c21aeceea Binary files /dev/null and b/img/image(146).png differ diff --git a/img/image(147).png b/img/image(147).png new file mode 100644 index 000000000..e4775b30b Binary files /dev/null and b/img/image(147).png differ diff --git a/img/image(148).png b/img/image(148).png new file mode 100644 index 000000000..2a1b939fd Binary files /dev/null and b/img/image(148).png differ diff --git a/img/image(149).png b/img/image(149).png new file mode 100644 index 000000000..228a76e60 Binary files /dev/null and b/img/image(149).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(1).png b/img/image(15)(3)(3)(3)(2)(1)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(1).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(2).png b/img/image(15)(3)(3)(3)(2)(1)(2).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(2).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1)(3).png b/img/image(15)(3)(3)(3)(2)(1)(3).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1)(3).png differ diff --git a/img/image(15)(3)(3)(3)(2)(1).png b/img/image(15)(3)(3)(3)(2)(1).png new file mode 100644 index 000000000..c9354df99 Binary files /dev/null and b/img/image(15)(3)(3)(3)(2)(1).png differ diff --git a/img/image(15).png b/img/image(15).png new file mode 100644 index 000000000..46b0b9854 Binary files /dev/null and b/img/image(15).png differ diff --git a/img/image(150).png b/img/image(150).png new file mode 100644 index 000000000..47e05591f Binary files /dev/null and b/img/image(150).png differ diff --git a/img/image(151).png b/img/image(151).png new file mode 100644 index 000000000..074de3fd6 Binary files /dev/null and b/img/image(151).png differ diff --git a/img/image(152).png b/img/image(152).png new file mode 100644 index 000000000..8c384ea71 Binary files /dev/null and b/img/image(152).png differ diff --git a/img/image(153).png b/img/image(153).png new file mode 100644 index 000000000..fc1b41081 Binary files /dev/null and b/img/image(153).png differ diff --git a/img/image(154).png b/img/image(154).png new file mode 100644 index 000000000..d39c24351 Binary files /dev/null and b/img/image(154).png differ diff --git a/img/image(155).png b/img/image(155).png new file mode 100644 index 000000000..150b38fb9 Binary files /dev/null and b/img/image(155).png differ diff --git a/img/image(156).png b/img/image(156).png new file mode 100644 index 000000000..f4bbb3084 Binary files /dev/null and b/img/image(156).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(1).png b/img/image(157)(1)(3)(3)(3)(1)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1)(2).png b/img/image(157)(1)(3)(3)(3)(1)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(1).png b/img/image(157)(1)(3)(3)(3)(1).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(1).png differ diff --git a/img/image(157)(1)(3)(3)(3)(2).png b/img/image(157)(1)(3)(3)(3)(2).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(2).png differ diff --git a/img/image(157)(1)(3)(3)(3)(3).png b/img/image(157)(1)(3)(3)(3)(3).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3)(3).png differ diff --git a/img/image(157)(1)(3)(3)(3).png b/img/image(157)(1)(3)(3)(3).png new file mode 100644 index 000000000..0c5109560 Binary files /dev/null and b/img/image(157)(1)(3)(3)(3).png differ diff --git a/img/image(158).png b/img/image(158).png new file mode 100644 index 000000000..d7ee2426e Binary files /dev/null and b/img/image(158).png differ diff --git a/img/image(159).png b/img/image(159).png new file mode 100644 index 000000000..a4e0f2308 Binary files /dev/null and b/img/image(159).png differ diff --git a/img/image(16).png b/img/image(16).png new file mode 100644 index 000000000..466663264 Binary files /dev/null and b/img/image(16).png differ diff --git a/img/image(160).png b/img/image(160).png new file mode 100644 index 000000000..836186bcd Binary files /dev/null and b/img/image(160).png differ diff --git a/img/image(161).png b/img/image(161).png new file mode 100644 index 000000000..6c080517d Binary files /dev/null and b/img/image(161).png differ diff --git a/img/image(162).png b/img/image(162).png new file mode 100644 index 000000000..03afaaa7f Binary files /dev/null and b/img/image(162).png differ diff --git a/img/image(163).png b/img/image(163).png new file mode 100644 index 000000000..f2fbd6a77 Binary files /dev/null and b/img/image(163).png differ diff --git a/img/image(165).png b/img/image(165).png new file mode 100644 index 000000000..669285326 Binary files /dev/null and b/img/image(165).png differ diff --git a/img/image(166).png b/img/image(166).png new file mode 100644 index 000000000..4f4e32f66 Binary files /dev/null and b/img/image(166).png differ diff --git a/img/image(167).png b/img/image(167).png new file mode 100644 index 000000000..8346caff4 Binary files /dev/null and b/img/image(167).png differ diff --git a/img/image(168).png b/img/image(168).png new file mode 100644 index 000000000..48f00f473 Binary files /dev/null and b/img/image(168).png differ diff --git a/img/image(17).png b/img/image(17).png new file mode 100644 index 000000000..fe41841e3 Binary files /dev/null and b/img/image(17).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(1).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(2).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(2).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(2).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(3).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(3).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(3).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(4).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(4).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1)(4).png differ diff --git a/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1).png b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1).png new file mode 100644 index 000000000..63673228b Binary files /dev/null and b/img/image(18)(1)(1)(1)(1)(1)(1)(4)(2)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(2).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(3).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(2).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(3).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1)(3).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(2).png b/img/image(18)(4)(2)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1)(3).png b/img/image(18)(4)(2)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(1).png b/img/image(18)(4)(2)(1)(1)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(2)(1).png b/img/image(18)(4)(2)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(2)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(2)(2).png b/img/image(18)(4)(2)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(2)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(2)(3).png b/img/image(18)(4)(2)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(2)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(2).png b/img/image(18)(4)(2)(1)(1)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1)(3).png b/img/image(18)(4)(2)(1)(1)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1)(1).png b/img/image(18)(4)(2)(1)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(1)(2).png b/img/image(18)(4)(2)(1)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(1)(3).png b/img/image(18)(4)(2)(1)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1)(1).png b/img/image(18)(4)(2)(1)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(1).png differ diff --git a/img/image(18)(4)(2)(1)(2).png b/img/image(18)(4)(2)(1)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(2).png differ diff --git a/img/image(18)(4)(2)(1)(3).png b/img/image(18)(4)(2)(1)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1)(3).png differ diff --git a/img/image(18)(4)(2)(1).png b/img/image(18)(4)(2)(1).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(1).png differ diff --git a/img/image(18)(4)(2)(2).png b/img/image(18)(4)(2)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(2).png differ diff --git a/img/image(18)(4)(2)(3).png b/img/image(18)(4)(2)(3).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(3).png differ diff --git a/img/image(18)(4)(2)(4).png b/img/image(18)(4)(2)(4).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2)(4).png differ diff --git a/img/image(18)(4)(2).png b/img/image(18)(4)(2).png new file mode 100644 index 000000000..8ff0c0418 Binary files /dev/null and b/img/image(18)(4)(2).png differ diff --git a/img/image(18).png b/img/image(18).png new file mode 100644 index 000000000..08b8df58c Binary files /dev/null and b/img/image(18).png differ diff --git a/img/image(19).png b/img/image(19).png new file mode 100644 index 000000000..c86740166 Binary files /dev/null and b/img/image(19).png differ diff --git a/img/image(2)(1).png b/img/image(2)(1).png new file mode 100644 index 000000000..d9db6f333 Binary files /dev/null and b/img/image(2)(1).png differ diff --git a/img/image(2)(2)(1).png b/img/image(2)(2)(1).png new file mode 100644 index 000000000..674a4608b Binary files /dev/null and b/img/image(2)(2)(1).png differ diff --git a/img/image(2)(2).png b/img/image(2)(2).png new file mode 100644 index 000000000..674a4608b Binary files /dev/null and b/img/image(2)(2).png differ diff --git a/img/image(2).png b/img/image(2).png new file mode 100644 index 000000000..4d85541e2 Binary files /dev/null and b/img/image(2).png differ diff --git a/img/image(20).png b/img/image(20).png new file mode 100644 index 000000000..99a120a8b Binary files /dev/null and b/img/image(20).png differ diff --git a/img/image(21).png b/img/image(21).png new file mode 100644 index 000000000..853cc7574 Binary files /dev/null and b/img/image(21).png differ diff --git a/img/image(22).png b/img/image(22).png new file mode 100644 index 000000000..3fb38e3a5 Binary files /dev/null and b/img/image(22).png differ diff --git a/img/image(23).png b/img/image(23).png new file mode 100644 index 000000000..702bfc7f8 Binary files /dev/null and b/img/image(23).png differ diff --git a/img/image(24).png b/img/image(24).png new file mode 100644 index 000000000..8b132361b Binary files /dev/null and b/img/image(24).png differ diff --git a/img/image(25).png b/img/image(25).png new file mode 100644 index 000000000..76fcca76b Binary files /dev/null and b/img/image(25).png differ diff --git a/img/image(26).png b/img/image(26).png new file mode 100644 index 000000000..425555b92 Binary files /dev/null and b/img/image(26).png differ diff --git a/img/image(27).png b/img/image(27).png new file mode 100644 index 000000000..1e3be3890 Binary files /dev/null and b/img/image(27).png differ diff --git a/img/image(28).png b/img/image(28).png new file mode 100644 index 000000000..a785ea383 Binary files /dev/null and b/img/image(28).png differ diff --git a/img/image(29).png b/img/image(29).png new file mode 100644 index 000000000..8f1b8eaca Binary files /dev/null and b/img/image(29).png differ diff --git a/img/image(3).png b/img/image(3).png new file mode 100644 index 000000000..7e7b93d24 Binary files /dev/null and b/img/image(3).png differ diff --git a/img/image(30).png b/img/image(30).png new file mode 100644 index 000000000..14c2f60ff Binary files /dev/null and b/img/image(30).png differ diff --git a/img/image(31).png b/img/image(31).png new file mode 100644 index 000000000..a067588e3 Binary files /dev/null and b/img/image(31).png differ diff --git a/img/image(32).png b/img/image(32).png new file mode 100644 index 000000000..7f6ad48df Binary files /dev/null and b/img/image(32).png differ diff --git a/img/image(33).png b/img/image(33).png new file mode 100644 index 000000000..95ada0b74 Binary files /dev/null and b/img/image(33).png differ diff --git a/img/image(34).png b/img/image(34).png new file mode 100644 index 000000000..121a8813f Binary files /dev/null and b/img/image(34).png differ diff --git a/img/image(35).png b/img/image(35).png new file mode 100644 index 000000000..d7166947a Binary files /dev/null and b/img/image(35).png differ diff --git a/img/image(36).png b/img/image(36).png new file mode 100644 index 000000000..a106b94d8 Binary files /dev/null and b/img/image(36).png differ diff --git a/img/image(37).png b/img/image(37).png new file mode 100644 index 000000000..8b9b9be7f Binary files /dev/null and b/img/image(37).png differ diff --git a/img/image(38).png b/img/image(38).png new file mode 100644 index 000000000..7b6d9dad6 Binary files /dev/null and b/img/image(38).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(2)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(2)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(2)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(2)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1)(2).png b/img/image(39)(2)(3)(3)(1)(1)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1)(2).png b/img/image(39)(2)(3)(3)(1)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1)(1).png b/img/image(39)(2)(3)(3)(1)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(1).png differ diff --git a/img/image(39)(2)(3)(3)(1)(2).png b/img/image(39)(2)(3)(3)(1)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1)(2).png differ diff --git a/img/image(39)(2)(3)(3)(1).png b/img/image(39)(2)(3)(3)(1).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(1).png differ diff --git a/img/image(39)(2)(3)(3)(2).png b/img/image(39)(2)(3)(3)(2).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(2).png differ diff --git a/img/image(39)(2)(3)(3)(3).png b/img/image(39)(2)(3)(3)(3).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3)(3).png differ diff --git a/img/image(39)(2)(3)(3).png b/img/image(39)(2)(3)(3).png new file mode 100644 index 000000000..d3e10014f Binary files /dev/null and b/img/image(39)(2)(3)(3).png differ diff --git a/img/image(39).png b/img/image(39).png new file mode 100644 index 000000000..d735bbd7f Binary files /dev/null and b/img/image(39).png differ diff --git a/img/image(4)(1).png b/img/image(4)(1).png new file mode 100644 index 000000000..a7b4601c6 Binary files /dev/null and b/img/image(4)(1).png differ diff --git a/img/image(4).png b/img/image(4).png new file mode 100644 index 000000000..e8af91fcd Binary files /dev/null and b/img/image(4).png differ diff --git a/img/image(40).png b/img/image(40).png new file mode 100644 index 000000000..13b963402 Binary files /dev/null and b/img/image(40).png differ diff --git a/img/image(41).png b/img/image(41).png new file mode 100644 index 000000000..5eb66e937 Binary files /dev/null and b/img/image(41).png differ diff --git a/img/image(42).png b/img/image(42).png new file mode 100644 index 000000000..904544b2a Binary files /dev/null and b/img/image(42).png differ diff --git a/img/image(43).png b/img/image(43).png new file mode 100644 index 000000000..be8c1b4b8 Binary files /dev/null and b/img/image(43).png differ diff --git a/img/image(44).png b/img/image(44).png new file mode 100644 index 000000000..6bb229e4a Binary files /dev/null and b/img/image(44).png differ diff --git a/img/image(45).png b/img/image(45).png new file mode 100644 index 000000000..bd1ac4377 Binary files /dev/null and b/img/image(45).png differ diff --git a/img/image(46).png b/img/image(46).png new file mode 100644 index 000000000..b551e2b83 Binary files /dev/null and b/img/image(46).png differ diff --git a/img/image(47).png b/img/image(47).png new file mode 100644 index 000000000..013fa88e9 Binary files /dev/null and b/img/image(47).png differ diff --git a/img/image(48).png b/img/image(48).png new file mode 100644 index 000000000..bc92c1673 Binary files /dev/null and b/img/image(48).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(1).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(2).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(2).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(2).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(3).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(3).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(3).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1)(4).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(4).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1)(4).png differ diff --git a/img/image(49)(2)(2)(2)(2)(2)(2)(1).png b/img/image(49)(2)(2)(2)(2)(2)(2)(1).png new file mode 100644 index 000000000..d5f2e82fb Binary files /dev/null and b/img/image(49)(2)(2)(2)(2)(2)(2)(1).png differ diff --git a/img/image(49).png b/img/image(49).png new file mode 100644 index 000000000..cb0053c10 Binary files /dev/null and b/img/image(49).png differ diff --git a/img/image(5).png b/img/image(5).png new file mode 100644 index 000000000..e1e34f08a Binary files /dev/null and b/img/image(5).png differ diff --git a/img/image(50).png b/img/image(50).png new file mode 100644 index 000000000..d773fc7eb Binary files /dev/null and b/img/image(50).png differ diff --git a/img/image(51).png b/img/image(51).png new file mode 100644 index 000000000..b8d20948e Binary files /dev/null and b/img/image(51).png differ diff --git a/img/image(52).png b/img/image(52).png new file mode 100644 index 000000000..2dfd1ec5e Binary files /dev/null and b/img/image(52).png differ diff --git a/img/image(53).png b/img/image(53).png new file mode 100644 index 000000000..94b3499bd Binary files /dev/null and b/img/image(53).png differ diff --git a/img/image(54).png b/img/image(54).png new file mode 100644 index 000000000..05555bd61 Binary files /dev/null and b/img/image(54).png differ diff --git a/img/image(55).png b/img/image(55).png new file mode 100644 index 000000000..48a28973b Binary files /dev/null and b/img/image(55).png differ diff --git a/img/image(56).png b/img/image(56).png new file mode 100644 index 000000000..34a2fad33 Binary files /dev/null and b/img/image(56).png differ diff --git a/img/image(57).png b/img/image(57).png new file mode 100644 index 000000000..566d17222 Binary files /dev/null and b/img/image(57).png differ diff --git a/img/image(58).png b/img/image(58).png new file mode 100644 index 000000000..22466bda4 Binary files /dev/null and b/img/image(58).png differ diff --git a/img/image(59).png b/img/image(59).png new file mode 100644 index 000000000..f9fb3640a Binary files /dev/null and b/img/image(59).png differ diff --git a/img/image(6)(1).png b/img/image(6)(1).png new file mode 100644 index 000000000..a723f7bfb Binary files /dev/null and b/img/image(6)(1).png differ diff --git a/img/image(6).png b/img/image(6).png new file mode 100644 index 000000000..11ff9927c Binary files /dev/null and b/img/image(6).png differ diff --git a/img/image(60).png b/img/image(60).png new file mode 100644 index 000000000..17f05dcd0 Binary files /dev/null and b/img/image(60).png differ diff --git a/img/image(61).png b/img/image(61).png new file mode 100644 index 000000000..20cc4b2eb Binary files /dev/null and b/img/image(61).png differ diff --git a/img/image(62).png b/img/image(62).png new file mode 100644 index 000000000..3cda05163 Binary files /dev/null and b/img/image(62).png differ diff --git a/img/image(63).png b/img/image(63).png new file mode 100644 index 000000000..b2f135400 Binary files /dev/null and b/img/image(63).png differ diff --git a/img/image(64).png b/img/image(64).png new file mode 100644 index 000000000..90e757408 Binary files /dev/null and b/img/image(64).png differ diff --git a/img/image(65).png b/img/image(65).png new file mode 100644 index 000000000..82fb5bc98 Binary files /dev/null and b/img/image(65).png differ diff --git a/img/image(66).png b/img/image(66).png new file mode 100644 index 000000000..df5ad2f7c Binary files /dev/null and b/img/image(66).png differ diff --git a/img/image(67).png b/img/image(67).png new file mode 100644 index 000000000..bfe2b325d Binary files /dev/null and b/img/image(67).png differ diff --git a/img/image(68).png b/img/image(68).png new file mode 100644 index 000000000..4c88bc905 Binary files /dev/null and b/img/image(68).png differ diff --git a/img/image(69)(1)(1).png b/img/image(69)(1)(1).png new file mode 100644 index 000000000..0eafc7588 Binary files /dev/null and b/img/image(69)(1)(1).png differ diff --git a/img/image(69)(1).png b/img/image(69)(1).png new file mode 100644 index 000000000..0eafc7588 Binary files /dev/null and b/img/image(69)(1).png differ diff --git a/img/image(69).png b/img/image(69).png new file mode 100644 index 000000000..61d0d560d Binary files /dev/null and b/img/image(69).png differ diff --git a/img/image(7).png b/img/image(7).png new file mode 100644 index 000000000..69130c89f Binary files /dev/null and b/img/image(7).png differ diff --git a/img/image(70).png b/img/image(70).png new file mode 100644 index 000000000..b715b77b1 Binary files /dev/null and b/img/image(70).png differ diff --git a/img/image(71).png b/img/image(71).png new file mode 100644 index 000000000..62d9ac9ba Binary files /dev/null and b/img/image(71).png differ diff --git a/img/image(72).png b/img/image(72).png new file mode 100644 index 000000000..245d33179 Binary files /dev/null and b/img/image(72).png differ diff --git a/img/image(73).png b/img/image(73).png new file mode 100644 index 000000000..b0b0c66ba Binary files /dev/null and b/img/image(73).png differ diff --git a/img/image(74).png b/img/image(74).png new file mode 100644 index 000000000..b56387e81 Binary files /dev/null and b/img/image(74).png differ diff --git a/img/image(75).png b/img/image(75).png new file mode 100644 index 000000000..dac322b87 Binary files /dev/null and b/img/image(75).png differ diff --git a/img/image(76).png b/img/image(76).png new file mode 100644 index 000000000..9b8e98259 Binary files /dev/null and b/img/image(76).png differ diff --git a/img/image(77).png b/img/image(77).png new file mode 100644 index 000000000..2bde5aef9 Binary files /dev/null and b/img/image(77).png differ diff --git a/img/image(78).png b/img/image(78).png new file mode 100644 index 000000000..c56a19bca Binary files /dev/null and b/img/image(78).png differ diff --git a/img/image(79).png b/img/image(79).png new file mode 100644 index 000000000..0b877d439 Binary files /dev/null and b/img/image(79).png differ diff --git a/img/image(8)(1)(1)(1)(1)(1).png b/img/image(8)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..c04195bf3 Binary files /dev/null and b/img/image(8)(1)(1)(1)(1)(1).png differ diff --git a/img/image(8)(1)(1)(1)(1).png b/img/image(8)(1)(1)(1)(1).png new file mode 100644 index 000000000..c04195bf3 Binary files /dev/null and b/img/image(8)(1)(1)(1)(1).png differ diff --git a/img/image(8).png b/img/image(8).png new file mode 100644 index 000000000..738eba5eb Binary files /dev/null and b/img/image(8).png differ diff --git a/img/image(80).png b/img/image(80).png new file mode 100644 index 000000000..5adf52ea3 Binary files /dev/null and b/img/image(80).png differ diff --git a/img/image(81).png b/img/image(81).png new file mode 100644 index 000000000..cfdf74794 Binary files /dev/null and b/img/image(81).png differ diff --git a/img/image(82).png b/img/image(82).png new file mode 100644 index 000000000..88902dc5f Binary files /dev/null and b/img/image(82).png differ diff --git a/img/image(83).png b/img/image(83).png new file mode 100644 index 000000000..afeb71568 Binary files /dev/null and b/img/image(83).png differ diff --git a/img/image(84).png b/img/image(84).png new file mode 100644 index 000000000..2b7210785 Binary files /dev/null and b/img/image(84).png differ diff --git a/img/image(85).png b/img/image(85).png new file mode 100644 index 000000000..ff6bebc1c Binary files /dev/null and b/img/image(85).png differ diff --git a/img/image(86).png b/img/image(86).png new file mode 100644 index 000000000..3bbab44b8 Binary files /dev/null and b/img/image(86).png differ diff --git a/img/image(87).png b/img/image(87).png new file mode 100644 index 000000000..e6733ee18 Binary files /dev/null and b/img/image(87).png differ diff --git a/img/image(88).png b/img/image(88).png new file mode 100644 index 000000000..208d93519 Binary files /dev/null and b/img/image(88).png differ diff --git a/img/image(89).png b/img/image(89).png new file mode 100644 index 000000000..f407d49a5 Binary files /dev/null and b/img/image(89).png differ diff --git a/img/image(9).png b/img/image(9).png new file mode 100644 index 000000000..6eaac7bb8 Binary files /dev/null and b/img/image(9).png differ diff --git a/img/image(90).png b/img/image(90).png new file mode 100644 index 000000000..5c1bf6bdd Binary files /dev/null and b/img/image(90).png differ diff --git a/img/image(91).png b/img/image(91).png new file mode 100644 index 000000000..578d03a95 Binary files /dev/null and b/img/image(91).png differ diff --git a/img/image(92).png b/img/image(92).png new file mode 100644 index 000000000..06f7d75a7 Binary files /dev/null and b/img/image(92).png differ diff --git a/img/image(93).png b/img/image(93).png new file mode 100644 index 000000000..da044f49e Binary files /dev/null and b/img/image(93).png differ diff --git a/img/image(94).png b/img/image(94).png new file mode 100644 index 000000000..7aef7ba32 Binary files /dev/null and b/img/image(94).png differ diff --git a/img/image(95).png b/img/image(95).png new file mode 100644 index 000000000..71a1d3799 Binary files /dev/null and b/img/image(95).png differ diff --git a/img/image(96).png b/img/image(96).png new file mode 100644 index 000000000..9330d44c0 Binary files /dev/null and b/img/image(96).png differ diff --git a/img/image(97).png b/img/image(97).png new file mode 100644 index 000000000..351a3e389 Binary files /dev/null and b/img/image(97).png differ diff --git a/img/image(98).png b/img/image(98).png new file mode 100644 index 000000000..1e5b7e400 Binary files /dev/null and b/img/image(98).png differ diff --git a/img/image(99).png b/img/image(99).png new file mode 100644 index 000000000..0fde2986a Binary files /dev/null and b/img/image(99).png differ diff --git a/img/image.png b/img/image.png new file mode 100644 index 000000000..bdde8764c Binary files /dev/null and b/img/image.png differ diff --git a/img/logo.svg b/img/logo.svg new file mode 100644 index 000000000..f9111fded --- /dev/null +++ b/img/logo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + diff --git a/img/nethermind.png b/img/nethermind.png new file mode 100644 index 000000000..e21dcff5b Binary files /dev/null and b/img/nethermind.png differ diff --git a/img/pobrane.png b/img/pobrane.png new file mode 100644 index 000000000..52b9ba703 Binary files /dev/null and b/img/pobrane.png differ diff --git a/img/portainer.gif b/img/portainer.gif new file mode 100644 index 000000000..0ee62941c Binary files /dev/null and b/img/portainer.gif differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(1)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(1).png b/img/provide_neth(1)(1)(4)(4)(4)(1).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(1).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(2).png b/img/provide_neth(1)(1)(4)(4)(4)(2).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(2).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(3).png b/img/provide_neth(1)(1)(4)(4)(4)(3).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(3).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4)(4).png b/img/provide_neth(1)(1)(4)(4)(4)(4).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4)(4).png differ diff --git a/img/provide_neth(1)(1)(4)(4)(4).png b/img/provide_neth(1)(1)(4)(4)(4).png new file mode 100644 index 000000000..02ccb6be6 Binary files /dev/null and b/img/provide_neth(1)(1)(4)(4)(4).png differ diff --git a/img/screenshot-from-2021-07-07-18-28-32.png b/img/screenshot-from-2021-07-07-18-28-32.png new file mode 100644 index 000000000..3c6fe7992 Binary files /dev/null and b/img/screenshot-from-2021-07-07-18-28-32.png differ diff --git a/img/screenshot-from-2021-07-07-18-31-18.png b/img/screenshot-from-2021-07-07-18-31-18.png new file mode 100644 index 000000000..b1184d5ee Binary files /dev/null and b/img/screenshot-from-2021-07-07-18-31-18.png differ diff --git a/img/screenshot-from-2021-07-07-18-32-26.png b/img/screenshot-from-2021-07-07-18-32-26.png new file mode 100644 index 000000000..d608254ac Binary files /dev/null and b/img/screenshot-from-2021-07-07-18-32-26.png differ diff --git a/img/screenshot-from-2021-07-07-18-32-55.png b/img/screenshot-from-2021-07-07-18-32-55.png new file mode 100644 index 000000000..3190ec7b2 Binary files /dev/null and b/img/screenshot-from-2021-07-07-18-32-55.png differ diff --git a/img/screenshot-from-2021-07-07-18-33-21.png b/img/screenshot-from-2021-07-07-18-33-21.png new file mode 100644 index 000000000..939b7eb53 Binary files /dev/null and b/img/screenshot-from-2021-07-07-18-33-21.png differ diff --git a/img/screenshot-from-2021-07-07-18-34-17.png b/img/screenshot-from-2021-07-07-18-34-17.png new file mode 100644 index 000000000..77833377a Binary files /dev/null and b/img/screenshot-from-2021-07-07-18-34-17.png differ diff --git a/img/screenshot-from-2021-07-07-18-41-11.png b/img/screenshot-from-2021-07-07-18-41-11.png new file mode 100644 index 000000000..f0f82e1e5 Binary files /dev/null and b/img/screenshot-from-2021-07-07-18-41-11.png differ diff --git a/img/screenshot-from-2021-07-07-18-43-35.png b/img/screenshot-from-2021-07-07-18-43-35.png new file mode 100644 index 000000000..6bb450924 Binary files /dev/null and b/img/screenshot-from-2021-07-07-18-43-35.png differ diff --git a/img/screenshot-from-2021-07-07-19-06-51.png b/img/screenshot-from-2021-07-07-19-06-51.png new file mode 100644 index 000000000..3bd192be7 Binary files /dev/null and b/img/screenshot-from-2021-07-07-19-06-51.png differ diff --git a/img/screenshot-from-2021-07-07-19-07-25.png b/img/screenshot-from-2021-07-07-19-07-25.png new file mode 100644 index 000000000..86804c25d Binary files /dev/null and b/img/screenshot-from-2021-07-07-19-07-25.png differ diff --git a/img/smoke-ultimate-ui.gif b/img/smoke-ultimate-ui.gif new file mode 100644 index 000000000..38bdb52e6 Binary files /dev/null and b/img/smoke-ultimate-ui.gif differ diff --git a/img/sync-checker.gif b/img/sync-checker.gif new file mode 100644 index 000000000..f4a855bc5 Binary files /dev/null and b/img/sync-checker.gif differ diff --git a/img/undraw_docusaurus_mountain.svg b/img/undraw_docusaurus_mountain.svg new file mode 100644 index 000000000..af961c49a --- /dev/null +++ b/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_react.svg b/img/undraw_docusaurus_react.svg new file mode 100644 index 000000000..94b5cf08f --- /dev/null +++ b/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_tree.svg b/img/undraw_docusaurus_tree.svg new file mode 100644 index 000000000..d9161d339 --- /dev/null +++ b/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/unhealthy.png b/img/unhealthy.png new file mode 100644 index 000000000..3d758192d Binary files /dev/null and b/img/unhealthy.png differ diff --git a/index.html b/index.html new file mode 100644 index 000000000..7c078fc78 --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + +Hello from Nethermind Documentation | Nethermind Documentation + + + + + +
+
Image description

Welcome to Nethermind: Your High-Performance Gateway to the Ethereum Network

.NET Core Powered

Robust & Scalable

Unlock the full potential of the Ethereum blockchain with the Nethermind client, designed for speed, reliability, and ease of use.

Lightning Fast

High-Speed Synchronization

Experience blazing fast synchronization times and minimal latency, ensuring your node stays in sync with the Ethereum network and your dApps run smoothly.

User-Friendly

Effortless Setup & Configuration

Get started quickly with our intuitive interface and easy-to-follow documentation. Nethermind makes managing your Ethereum node simpler than ever.

+ + + + \ No newline at end of file diff --git a/markdown-page.html b/markdown-page.html new file mode 100644 index 000000000..3862a303c --- /dev/null +++ b/markdown-page.html @@ -0,0 +1,17 @@ + + + + + +Markdown page example | Nethermind Documentation + + + + + +
+

Markdown page example

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

+ + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 000000000..365e5aed2 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://docs.nethermind.io/blogweekly0.5https://docs.nethermind.io/blog/archiveweekly0.5https://docs.nethermind.io/blog/first-blog-postweekly0.5https://docs.nethermind.io/blog/long-blog-postweekly0.5https://docs.nethermind.io/blog/mdx-blog-postweekly0.5https://docs.nethermind.io/blog/tagsweekly0.5https://docs.nethermind.io/blog/tags/docusaurusweekly0.5https://docs.nethermind.io/blog/tags/facebookweekly0.5https://docs.nethermind.io/blog/tags/helloweekly0.5https://docs.nethermind.io/blog/tags/holaweekly0.5https://docs.nethermind.io/blog/welcomeweekly0.5https://docs.nethermind.io/markdown-pageweekly0.5https://docs.nethermind.io/docsweekly0.5https://docs.nethermind.io/docs/category/contact-usweekly0.5https://docs.nethermind.io/docs/category/for-developersweekly0.5https://docs.nethermind.io/docs/category/fundamentalsweekly0.5https://docs.nethermind.io/docs/category/getting-startedweekly0.5https://docs.nethermind.io/docs/category/interacting-with-nethermindweekly0.5https://docs.nethermind.io/docs/category/monitoringweekly0.5https://docs.nethermind.io/docs/category/nethermind-utilitiesweekly0.5https://docs.nethermind.io/docs/category/resourcesweekly0.5https://docs.nethermind.io/docs/contactweekly0.5https://docs.nethermind.io/docs/for-developers/building-nethermindweekly0.5https://docs.nethermind.io/docs/for-developers/coding-styleweekly0.5https://docs.nethermind.io/docs/for-developers/custom-analytic-toolsweekly0.5https://docs.nethermind.io/docs/for-developers/pluginsweekly0.5https://docs.nethermind.io/docs/for-developers/web3.pyweekly0.5https://docs.nethermind.io/docs/fundamentals/configurationweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/accountabstractionweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/auraweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/auramergeweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/blocksweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/bloomweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/ethstatsweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/healthchecksweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/hiveweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/initweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/jsonrpcweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/keystoreweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/mergeweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/metricsweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/mevweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/miningweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/networkweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/pluginweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/pruningweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/receiptweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/sample-configurationweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/seqweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/syncweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/tracestoreweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/txpoolweekly0.5https://docs.nethermind.io/docs/fundamentals/configuration/walletweekly0.5https://docs.nethermind.io/docs/fundamentals/databaseweekly0.5https://docs.nethermind.io/docs/fundamentals/how-to-reduce-database-sizeweekly0.5https://docs.nethermind.io/docs/fundamentals/how-to-reduce-database-size/full-pruningweekly0.5https://docs.nethermind.io/docs/fundamentals/how-to-reduce-database-size/resync-database-from-scratchweekly0.5https://docs.nethermind.io/docs/fundamentals/logs/logging-configurationweekly0.5https://docs.nethermind.io/docs/fundamentals/logs/logsweekly0.5https://docs.nethermind.io/docs/fundamentals/private-networksweekly0.5https://docs.nethermind.io/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-clique-based-chainweekly0.5https://docs.nethermind.io/docs/fundamentals/private-networks/how-to-setup-a-nethermind-only-spaceneth-based-chainweekly0.5https://docs.nethermind.io/docs/fundamentals/running-nethermind-post-mergeweekly0.5https://docs.nethermind.io/docs/fundamentals/running-nethermind/running-the-clientweekly0.5https://docs.nethermind.io/docs/fundamentals/running-nethermind/runtimeweekly0.5https://docs.nethermind.io/docs/fundamentals/securityweekly0.5https://docs.nethermind.io/docs/fundamentals/sync-modesweekly0.5https://docs.nethermind.io/docs/getting-started/installing-nethermindweekly0.5https://docs.nethermind.io/docs/getting-started/manage-nethermind-with-systemdweekly0.5https://docs.nethermind.io/docs/getting-started/migrating-from-gethweekly0.5https://docs.nethermind.io/docs/getting-started/networksweekly0.5https://docs.nethermind.io/docs/getting-started/system-requirementsweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-apiweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/adminweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/cliqueweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/debugweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/engine-jsonrpc-config-exampleweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/ethweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/evmweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/netweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/parityweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/personalweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/proofweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/rpcweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/subscribeweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/traceweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/txpoolweekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/web3weekly0.5https://docs.nethermind.io/docs/interacting-with-nethermind/json-rpc-api/witnessweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanationweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/accountabstractionweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/accountabstraction.networkweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/blockchainweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/consensus.auraweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/dbweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/dotnet-countersweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/evmweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/initweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/jsonrpcweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/merge.pluginweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/mevweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/networkweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/runnerweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/setting-up-local-metrics-infrastractureweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/storeweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/trieweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/trie.pruningweekly0.5https://docs.nethermind.io/docs/monitoring/metrics-explanation/txpoolweekly0.5https://docs.nethermind.io/docs/monitoring/monitoring-node-healthweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cliweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/adminweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/cliqueweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/debugweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/diagweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/ethweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/netweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/nodeweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/parityweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/personalweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/proofweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/systemweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/traceweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/txpoolweekly0.5https://docs.nethermind.io/docs/nethermind-utilities/cli/web3weekly0.5https://docs.nethermind.io/docs/nethermind-utilities/pipelineweekly0.5https://docs.nethermind.io/docs/resources/connecting-walletweekly0.5https://docs.nethermind.io/docs/resources/faqweekly0.5https://docs.nethermind.io/docs/resources/firewall-configurationweekly0.5https://docs.nethermind.io/docs/resources/guides-and-helpers/deploy-nethermind-with-monitoring-stackweekly0.5https://docs.nethermind.io/docs/resources/guides-and-helpers/eth2-less-than-greater-than-nethermindweekly0.5https://docs.nethermind.io/docs/resources/guides-and-helpers/eth2-lighthouse-less-than-greater-than-nethermindweekly0.5https://docs.nethermind.io/docs/resources/guides-and-helpers/validator-setup/aura-validatorweekly0.5https://docs.nethermind.io/docs/resources/guides-and-helpers/validator-setup/eth2-validatorweekly0.5https://docs.nethermind.io/docs/resources/know-issuesweekly0.5https://docs.nethermind.io/weekly0.5 \ No newline at end of file