Created by Theo Telonis (dd0sxx) for Macro
29 |Opcode gas numbers were sourced from the official Ethereum Docs, and contract-calls were sourced from Etherscan.io and converted into gas units using Wolfram Alpha for calculations.
38 |Inspired by Norvig's Latency Numbers, and a post in the Macro discord from a student named Justin Phu, who suggested someone make a version with gas numbers for popular calls and opcodes.
39 | 45 |Want to become an expert smart contract developer? Check out the Macro Engineering Fellowship 🚀
229 |Something missing from this page? Make an issue or PR on our github repo 🤖
230 | 231 | 232 | -------------------------------------------------------------------------------- /dist/output.css: -------------------------------------------------------------------------------- 1 | /* 2 | ! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com 3 | */ 4 | 5 | /* 6 | 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) 7 | 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) 8 | */ 9 | 10 | *, 11 | ::before, 12 | ::after { 13 | box-sizing: border-box; 14 | /* 1 */ 15 | border-width: 0; 16 | /* 2 */ 17 | border-style: solid; 18 | /* 2 */ 19 | border-color: #e5e7eb; 20 | /* 2 */ 21 | } 22 | 23 | ::before, 24 | ::after { 25 | --tw-content: ''; 26 | } 27 | 28 | /* 29 | 1. Use a consistent sensible line-height in all browsers. 30 | 2. Prevent adjustments of font size after orientation changes in iOS. 31 | 3. Use a more readable tab size. 32 | 4. Use the user's configured `sans` font-family by default. 33 | */ 34 | 35 | html { 36 | line-height: 1.5; 37 | /* 1 */ 38 | -webkit-text-size-adjust: 100%; 39 | /* 2 */ 40 | -moz-tab-size: 4; 41 | /* 3 */ 42 | -o-tab-size: 4; 43 | tab-size: 4; 44 | /* 3 */ 45 | font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 46 | /* 4 */ 47 | } 48 | 49 | /* 50 | 1. Remove the margin in all browsers. 51 | 2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. 52 | */ 53 | 54 | body { 55 | margin: 0; 56 | /* 1 */ 57 | line-height: inherit; 58 | /* 2 */ 59 | } 60 | 61 | /* 62 | 1. Add the correct height in Firefox. 63 | 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) 64 | 3. Ensure horizontal rules are visible by default. 65 | */ 66 | 67 | hr { 68 | height: 0; 69 | /* 1 */ 70 | color: inherit; 71 | /* 2 */ 72 | border-top-width: 1px; 73 | /* 3 */ 74 | } 75 | 76 | /* 77 | Add the correct text decoration in Chrome, Edge, and Safari. 78 | */ 79 | 80 | abbr:where([title]) { 81 | -webkit-text-decoration: underline dotted; 82 | text-decoration: underline dotted; 83 | } 84 | 85 | /* 86 | Remove the default font size and weight for headings. 87 | */ 88 | 89 | h1, 90 | h2, 91 | h3, 92 | h4, 93 | h5, 94 | h6 { 95 | font-size: inherit; 96 | font-weight: inherit; 97 | } 98 | 99 | /* 100 | Reset links to optimize for opt-in styling instead of opt-out. 101 | */ 102 | 103 | a { 104 | color: inherit; 105 | text-decoration: inherit; 106 | } 107 | 108 | /* 109 | Add the correct font weight in Edge and Safari. 110 | */ 111 | 112 | b, 113 | strong { 114 | font-weight: bolder; 115 | } 116 | 117 | /* 118 | 1. Use the user's configured `mono` font family by default. 119 | 2. Correct the odd `em` font sizing in all browsers. 120 | */ 121 | 122 | code, 123 | kbd, 124 | samp, 125 | pre { 126 | font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 127 | /* 1 */ 128 | font-size: 1em; 129 | /* 2 */ 130 | } 131 | 132 | /* 133 | Add the correct font size in all browsers. 134 | */ 135 | 136 | small { 137 | font-size: 80%; 138 | } 139 | 140 | /* 141 | Prevent `sub` and `sup` elements from affecting the line height in all browsers. 142 | */ 143 | 144 | sub, 145 | sup { 146 | font-size: 75%; 147 | line-height: 0; 148 | position: relative; 149 | vertical-align: baseline; 150 | } 151 | 152 | sub { 153 | bottom: -0.25em; 154 | } 155 | 156 | sup { 157 | top: -0.5em; 158 | } 159 | 160 | /* 161 | 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) 162 | 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) 163 | 3. Remove gaps between table borders by default. 164 | */ 165 | 166 | table { 167 | text-indent: 0; 168 | /* 1 */ 169 | border-color: inherit; 170 | /* 2 */ 171 | border-collapse: collapse; 172 | /* 3 */ 173 | } 174 | 175 | /* 176 | 1. Change the font styles in all browsers. 177 | 2. Remove the margin in Firefox and Safari. 178 | 3. Remove default padding in all browsers. 179 | */ 180 | 181 | button, 182 | input, 183 | optgroup, 184 | select, 185 | textarea { 186 | font-family: inherit; 187 | /* 1 */ 188 | font-size: 100%; 189 | /* 1 */ 190 | font-weight: inherit; 191 | /* 1 */ 192 | line-height: inherit; 193 | /* 1 */ 194 | color: inherit; 195 | /* 1 */ 196 | margin: 0; 197 | /* 2 */ 198 | padding: 0; 199 | /* 3 */ 200 | } 201 | 202 | /* 203 | Remove the inheritance of text transform in Edge and Firefox. 204 | */ 205 | 206 | button, 207 | select { 208 | text-transform: none; 209 | } 210 | 211 | /* 212 | 1. Correct the inability to style clickable types in iOS and Safari. 213 | 2. Remove default button styles. 214 | */ 215 | 216 | button, 217 | [type='button'], 218 | [type='reset'], 219 | [type='submit'] { 220 | -webkit-appearance: button; 221 | /* 1 */ 222 | background-color: transparent; 223 | /* 2 */ 224 | background-image: none; 225 | /* 2 */ 226 | } 227 | 228 | /* 229 | Use the modern Firefox focus style for all focusable elements. 230 | */ 231 | 232 | :-moz-focusring { 233 | outline: auto; 234 | } 235 | 236 | /* 237 | Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) 238 | */ 239 | 240 | :-moz-ui-invalid { 241 | box-shadow: none; 242 | } 243 | 244 | /* 245 | Add the correct vertical alignment in Chrome and Firefox. 246 | */ 247 | 248 | progress { 249 | vertical-align: baseline; 250 | } 251 | 252 | /* 253 | Correct the cursor style of increment and decrement buttons in Safari. 254 | */ 255 | 256 | ::-webkit-inner-spin-button, 257 | ::-webkit-outer-spin-button { 258 | height: auto; 259 | } 260 | 261 | /* 262 | 1. Correct the odd appearance in Chrome and Safari. 263 | 2. Correct the outline style in Safari. 264 | */ 265 | 266 | [type='search'] { 267 | -webkit-appearance: textfield; 268 | /* 1 */ 269 | outline-offset: -2px; 270 | /* 2 */ 271 | } 272 | 273 | /* 274 | Remove the inner padding in Chrome and Safari on macOS. 275 | */ 276 | 277 | ::-webkit-search-decoration { 278 | -webkit-appearance: none; 279 | } 280 | 281 | /* 282 | 1. Correct the inability to style clickable types in iOS and Safari. 283 | 2. Change font properties to `inherit` in Safari. 284 | */ 285 | 286 | ::-webkit-file-upload-button { 287 | -webkit-appearance: button; 288 | /* 1 */ 289 | font: inherit; 290 | /* 2 */ 291 | } 292 | 293 | /* 294 | Add the correct display in Chrome and Safari. 295 | */ 296 | 297 | summary { 298 | display: list-item; 299 | } 300 | 301 | /* 302 | Removes the default spacing and border for appropriate elements. 303 | */ 304 | 305 | blockquote, 306 | dl, 307 | dd, 308 | h1, 309 | h2, 310 | h3, 311 | h4, 312 | h5, 313 | h6, 314 | hr, 315 | figure, 316 | p, 317 | pre { 318 | margin: 0; 319 | } 320 | 321 | fieldset { 322 | margin: 0; 323 | padding: 0; 324 | } 325 | 326 | legend { 327 | padding: 0; 328 | } 329 | 330 | ol, 331 | ul, 332 | menu { 333 | list-style: none; 334 | margin: 0; 335 | padding: 0; 336 | } 337 | 338 | /* 339 | Prevent resizing textareas horizontally by default. 340 | */ 341 | 342 | textarea { 343 | resize: vertical; 344 | } 345 | 346 | /* 347 | 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) 348 | 2. Set the default placeholder color to the user's configured gray 400 color. 349 | */ 350 | 351 | input::-moz-placeholder, textarea::-moz-placeholder { 352 | opacity: 1; 353 | /* 1 */ 354 | color: #9ca3af; 355 | /* 2 */ 356 | } 357 | 358 | input::placeholder, 359 | textarea::placeholder { 360 | opacity: 1; 361 | /* 1 */ 362 | color: #9ca3af; 363 | /* 2 */ 364 | } 365 | 366 | /* 367 | Set the default cursor for buttons. 368 | */ 369 | 370 | button, 371 | [role="button"] { 372 | cursor: pointer; 373 | } 374 | 375 | /* 376 | Make sure disabled buttons don't get the pointer cursor. 377 | */ 378 | 379 | :disabled { 380 | cursor: default; 381 | } 382 | 383 | /* 384 | 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) 385 | 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) 386 | This can trigger a poorly considered lint error in some tools but is included by design. 387 | */ 388 | 389 | img, 390 | svg, 391 | video, 392 | canvas, 393 | audio, 394 | iframe, 395 | embed, 396 | object { 397 | display: block; 398 | /* 1 */ 399 | vertical-align: middle; 400 | /* 2 */ 401 | } 402 | 403 | /* 404 | Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) 405 | */ 406 | 407 | img, 408 | video { 409 | max-width: 100%; 410 | height: auto; 411 | } 412 | 413 | *, ::before, ::after { 414 | --tw-border-spacing-x: 0; 415 | --tw-border-spacing-y: 0; 416 | --tw-translate-x: 0; 417 | --tw-translate-y: 0; 418 | --tw-rotate: 0; 419 | --tw-skew-x: 0; 420 | --tw-skew-y: 0; 421 | --tw-scale-x: 1; 422 | --tw-scale-y: 1; 423 | --tw-pan-x: ; 424 | --tw-pan-y: ; 425 | --tw-pinch-zoom: ; 426 | --tw-scroll-snap-strictness: proximity; 427 | --tw-ordinal: ; 428 | --tw-slashed-zero: ; 429 | --tw-numeric-figure: ; 430 | --tw-numeric-spacing: ; 431 | --tw-numeric-fraction: ; 432 | --tw-ring-inset: ; 433 | --tw-ring-offset-width: 0px; 434 | --tw-ring-offset-color: #fff; 435 | --tw-ring-color: rgb(59 130 246 / 0.5); 436 | --tw-ring-offset-shadow: 0 0 #0000; 437 | --tw-ring-shadow: 0 0 #0000; 438 | --tw-shadow: 0 0 #0000; 439 | --tw-shadow-colored: 0 0 #0000; 440 | --tw-blur: ; 441 | --tw-brightness: ; 442 | --tw-contrast: ; 443 | --tw-grayscale: ; 444 | --tw-hue-rotate: ; 445 | --tw-invert: ; 446 | --tw-saturate: ; 447 | --tw-sepia: ; 448 | --tw-drop-shadow: ; 449 | --tw-backdrop-blur: ; 450 | --tw-backdrop-brightness: ; 451 | --tw-backdrop-contrast: ; 452 | --tw-backdrop-grayscale: ; 453 | --tw-backdrop-hue-rotate: ; 454 | --tw-backdrop-invert: ; 455 | --tw-backdrop-opacity: ; 456 | --tw-backdrop-saturate: ; 457 | --tw-backdrop-sepia: ; 458 | } 459 | 460 | ::-webkit-backdrop { 461 | --tw-border-spacing-x: 0; 462 | --tw-border-spacing-y: 0; 463 | --tw-translate-x: 0; 464 | --tw-translate-y: 0; 465 | --tw-rotate: 0; 466 | --tw-skew-x: 0; 467 | --tw-skew-y: 0; 468 | --tw-scale-x: 1; 469 | --tw-scale-y: 1; 470 | --tw-pan-x: ; 471 | --tw-pan-y: ; 472 | --tw-pinch-zoom: ; 473 | --tw-scroll-snap-strictness: proximity; 474 | --tw-ordinal: ; 475 | --tw-slashed-zero: ; 476 | --tw-numeric-figure: ; 477 | --tw-numeric-spacing: ; 478 | --tw-numeric-fraction: ; 479 | --tw-ring-inset: ; 480 | --tw-ring-offset-width: 0px; 481 | --tw-ring-offset-color: #fff; 482 | --tw-ring-color: rgb(59 130 246 / 0.5); 483 | --tw-ring-offset-shadow: 0 0 #0000; 484 | --tw-ring-shadow: 0 0 #0000; 485 | --tw-shadow: 0 0 #0000; 486 | --tw-shadow-colored: 0 0 #0000; 487 | --tw-blur: ; 488 | --tw-brightness: ; 489 | --tw-contrast: ; 490 | --tw-grayscale: ; 491 | --tw-hue-rotate: ; 492 | --tw-invert: ; 493 | --tw-saturate: ; 494 | --tw-sepia: ; 495 | --tw-drop-shadow: ; 496 | --tw-backdrop-blur: ; 497 | --tw-backdrop-brightness: ; 498 | --tw-backdrop-contrast: ; 499 | --tw-backdrop-grayscale: ; 500 | --tw-backdrop-hue-rotate: ; 501 | --tw-backdrop-invert: ; 502 | --tw-backdrop-opacity: ; 503 | --tw-backdrop-saturate: ; 504 | --tw-backdrop-sepia: ; 505 | } 506 | 507 | ::backdrop { 508 | --tw-border-spacing-x: 0; 509 | --tw-border-spacing-y: 0; 510 | --tw-translate-x: 0; 511 | --tw-translate-y: 0; 512 | --tw-rotate: 0; 513 | --tw-skew-x: 0; 514 | --tw-skew-y: 0; 515 | --tw-scale-x: 1; 516 | --tw-scale-y: 1; 517 | --tw-pan-x: ; 518 | --tw-pan-y: ; 519 | --tw-pinch-zoom: ; 520 | --tw-scroll-snap-strictness: proximity; 521 | --tw-ordinal: ; 522 | --tw-slashed-zero: ; 523 | --tw-numeric-figure: ; 524 | --tw-numeric-spacing: ; 525 | --tw-numeric-fraction: ; 526 | --tw-ring-inset: ; 527 | --tw-ring-offset-width: 0px; 528 | --tw-ring-offset-color: #fff; 529 | --tw-ring-color: rgb(59 130 246 / 0.5); 530 | --tw-ring-offset-shadow: 0 0 #0000; 531 | --tw-ring-shadow: 0 0 #0000; 532 | --tw-shadow: 0 0 #0000; 533 | --tw-shadow-colored: 0 0 #0000; 534 | --tw-blur: ; 535 | --tw-brightness: ; 536 | --tw-contrast: ; 537 | --tw-grayscale: ; 538 | --tw-hue-rotate: ; 539 | --tw-invert: ; 540 | --tw-saturate: ; 541 | --tw-sepia: ; 542 | --tw-drop-shadow: ; 543 | --tw-backdrop-blur: ; 544 | --tw-backdrop-brightness: ; 545 | --tw-backdrop-contrast: ; 546 | --tw-backdrop-grayscale: ; 547 | --tw-backdrop-hue-rotate: ; 548 | --tw-backdrop-invert: ; 549 | --tw-backdrop-opacity: ; 550 | --tw-backdrop-saturate: ; 551 | --tw-backdrop-sepia: ; 552 | } 553 | 554 | .absolute { 555 | position: absolute; 556 | } 557 | 558 | .m-auto { 559 | margin: auto; 560 | } 561 | 562 | .my-auto { 563 | margin-top: auto; 564 | margin-bottom: auto; 565 | } 566 | 567 | .my-5 { 568 | margin-top: 1.25rem; 569 | margin-bottom: 1.25rem; 570 | } 571 | 572 | .mb-5 { 573 | margin-bottom: 1.25rem; 574 | } 575 | 576 | .mt-1 { 577 | margin-top: 0.25rem; 578 | } 579 | 580 | .mb-1 { 581 | margin-bottom: 0.25rem; 582 | } 583 | 584 | .mb-0 { 585 | margin-bottom: 0px; 586 | } 587 | 588 | .mt-2 { 589 | margin-top: 0.5rem; 590 | } 591 | 592 | .block { 593 | display: block; 594 | } 595 | 596 | .flex { 597 | display: flex; 598 | } 599 | 600 | .h-8 { 601 | height: 2rem; 602 | } 603 | 604 | .max-w-5xl { 605 | max-width: 64rem; 606 | } 607 | 608 | .flex-col { 609 | flex-direction: column; 610 | } 611 | 612 | .flex-wrap { 613 | flex-wrap: wrap; 614 | } 615 | 616 | .justify-between { 617 | justify-content: space-between; 618 | } 619 | 620 | .border-2 { 621 | border-width: 2px; 622 | } 623 | 624 | .border { 625 | border-width: 1px; 626 | } 627 | 628 | .border-black { 629 | --tw-border-opacity: 1; 630 | border-color: rgb(0 0 0 / var(--tw-border-opacity)); 631 | } 632 | 633 | .object-contain { 634 | -o-object-fit: contain; 635 | object-fit: contain; 636 | } 637 | 638 | .p-2 { 639 | padding: 0.5rem; 640 | } 641 | 642 | .pt-5 { 643 | padding-top: 1.25rem; 644 | } 645 | 646 | .text-2xl { 647 | font-size: 1.5rem; 648 | line-height: 2rem; 649 | } 650 | 651 | .text-xs { 652 | font-size: 0.75rem; 653 | line-height: 1rem; 654 | } 655 | 656 | .text-sm { 657 | font-size: 0.875rem; 658 | line-height: 1.25rem; 659 | } 660 | 661 | .text-xl { 662 | font-size: 1.25rem; 663 | line-height: 1.75rem; 664 | } 665 | 666 | .font-bold { 667 | font-weight: 700; 668 | } 669 | 670 | .text-neutral-600 { 671 | --tw-text-opacity: 1; 672 | color: rgb(82 82 82 / var(--tw-text-opacity)); 673 | } 674 | 675 | .underline { 676 | -webkit-text-decoration-line: underline; 677 | text-decoration-line: underline; 678 | } 679 | 680 | .underline-offset-2 { 681 | text-underline-offset: 2px; 682 | } 683 | 684 | .underline-offset-4 { 685 | text-underline-offset: 4px; 686 | } 687 | 688 | #opcodes { 689 | max-height: 400px; 690 | } 691 | 692 | #contract-calls{ 693 | max-height: 2650px; 694 | } 695 | 696 | .opcode { 697 | margin: 10px 5px; 698 | min-width: 200px; 699 | } 700 | 701 | .contract-call { 702 | margin: 10px 5px; 703 | min-width: 200px; 704 | } 705 | 706 | .operation-name { 707 | /* display: flex; */ 708 | /* align-items: center; */ 709 | } 710 | 711 | a { 712 | text-decoration: underline; 713 | color: blue; 714 | cursor: pointer; 715 | } 716 | 717 | @media only screen and (max-width: 1000px) { 718 | body { 719 | padding: 2%; 720 | } 721 | 722 | #opcodes { 723 | flex-direction: row !important; 724 | max-height: 1000000000px !important; 725 | /* nonsensically large number to prevent overlapping */ 726 | } 727 | 728 | #contract-calls{ 729 | flex-direction: row !important; 730 | max-height: 1000000000px !important; 731 | /* nonsensically large number to prevent overlapping */ 732 | } 733 | } --------------------------------------------------------------------------------