(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[     47581,       1231]
NotebookOptionsPosition[     37440,       1044]
NotebookOutlinePosition[     39694,       1096]
CellTagsIndexPosition[     39616,       1091]
WindowTitle->EthereumAddress
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES SYMBOL", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "d1d37e2a-6782-4a60-9634-1d113ceb2006"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "48415c75-34cd-444f-8a6d-53ae68a7005b"],
        Background->LightDarkSwitched[
          RGBColor[0.490196, 0.576471, 0.690196]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[{
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "See Also",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "67ed7eef-155b-4325-a429-6dbd03815acb"]
         }],ExpressionUUID->"5232c073-2598-45d5-b339-431522de05b4"],
         StripOnInput->False],{
        StyleBox["\"Hash\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup["paclet:ref/Hash"], Delimiter, 
         StyleBox[
          "\"Functions\"", "SeeAlsoSection", FontSize -> 14, FontSlant -> 
           "Italic", StripOnInput -> False] :> 
         NotebookFind[EvaluationNotebook[], "SeeAlsoSection", All, CellStyle],
          StyleBox[
          StyleBox[
           "\"BitcoinAddress\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/BitcoinAddress"], 
         StyleBox[
          StyleBox[
           "\"Secp256k1PublicKey\"", "SeeAlsoRelated", StripOnInput -> False],
            "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1PublicKey"], 
         StyleBox[
          StyleBox[
           "\"BIP32DeriveKey\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/BIP32DeriveKey"], 
         StyleBox[
          StyleBox[
           "\"BIP32StandardPath\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/BIP32StandardPath"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "38e71145-68d8-478a-97e5-5be2dd8fe827"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "Related Guides",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "d16e5cda-2dc9-467d-87c4-060a7afa362d"]
         }],ExpressionUUID->"21881d00-237d-41f3-805d-af8c811feb30"],
         StripOnInput->False],{
        "\"Derivation\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Derivation"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "5e67b91e-5a34-4c64-bac1-b83ca40843b4"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "URL",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "190a10b8-b10f-4a78-a14a-3a74b1be9d26"]
         }],ExpressionUUID->"e415db9f-274f-40cb-834d-72145a304989"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/EthereumAddress\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/EthereumAddress"], 
         Delimiter, "\"Copy web URL\"" :> 
         Module[{DocumentationSearch`Private`nb$}, 
           DocumentationSearch`Private`nb$ = 
            NotebookPut[
             Notebook[{
               Cell[BoxData[
                 MakeBoxes[
                  Hyperlink[
                   "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/ref/EthereumAddress.html"], StandardForm]], "Input", 
                 TextClipboardType -> "PlainText"]}, Visible -> False]]; 
           SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
           FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
           NotebookClose[DocumentationSearch`Private`nb$]; Null], 
         "\"Go to web URL\"" :> 
         FrontEndExecute[{
           NotebookLocate[{
             URL[If[TrueQ[False], 
                 "http://reference.wolfram.com/system-modeler/", 
                 "http://reference.wolfram.com/language/"] <> 
               "WolframInstitute/Puzzles/ref/EthereumAddress" <> ".html"], 
              None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "7052d36b-715e-41e5-929e-782c77e40cae"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "f9185964-09be-425a-9359-cf4df4c813d8"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"d1958d37-0f97-4b0b-a597-a95a935257c6"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"fad4e0d9-4303-4382-a54a-7c5e0aefc0fc"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "EthereumAddress", "ObjectName",ExpressionUUID->
      "67f6073e-df51-40da-8a8f-7f7afd92541b"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"a9324bb8-6b81-4012-9874-dc82e1889907"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "15db05e4-c710-4881-91ba-5e4ab18099a1"]
    }],ExpressionUUID->"aa302c97-cb8e-43eb-b074-02852c791cca"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"5d52de44-d1b1-4d64-a6ec-\
92526eaf82fa"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["EthereumAddress"]], 
         "paclet:WolframInstitute/Puzzles/ref/EthereumAddress", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       StyleBox["key", "TI"], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "b0b4bd8a-6fb2-426e-bd66-72a75f1c63f9"],
     "\[LineSeparator]",
     "gives the EIP-55 checksummed Ethereum address of a public ",
     StyleBox["key", "TI"],
     "."
    }],ExpressionUUID->"850adb53-1f21-441e-b4f3-69d2daff5da2"]},
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["EthereumAddress"]], 
         "paclet:WolframInstitute/Puzzles/ref/EthereumAddress", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       StyleBox["string", "TI"], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "63f03406-ef27-4561-8d07-00e630cada46"],
     "\[LineSeparator]",
     "renormalises the case of an existing address ",
     StyleBox["string", "TI"],
     " to its EIP-55 checksum form."
    }],ExpressionUUID->"7ba722df-0576-4c61-b4a2-4d0651ce5243"]}
  }]], "Usage",ExpressionUUID->"fdbd4fa4-36eb-4e38-92b3-6bca27839a16"]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[Cell[BoxData[Cell[TextData[{
  Cell[BoxData[
   DynamicBox[ToBoxes[
     If[CurrentValue[
        EvaluationCell[], "CellGroupOpen"] =!= Closed, 
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], 
      Rotate[
       Style[
        Graphics[{
          Thickness[0.18], 
          RGBColor[0.8509803921568627, 0.396078431372549, 0], 
          Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
         PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
        0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
    ImageSizeCache->{
     13.600000000000001`, {-0.1685058593749993, 13.768505859375}}]],
   ExpressionUUID->"49fc45e3-32b1-4733-ba87-1b9474a90cd8"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"5c36d5bc-c3a1-49c4-b30d-e9a367e33a94"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "c2bbe1d4-9f89-4128-8fb2-69f5e7e60b49"]],ExpressionUUID->"5b9d2de7-ff1a-\
4ee4-a38c-5549a941e503"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->210464112,ExpressionUUID->"d0da7122-9a7d-4ea0-b1d6-3a0048eba7d2"],

Cell[TextData[{
 "The address is the last 20 bytes of the Keccak-256 hash of the 64-byte \
uncompressed public key, with the ",
 Cell[BoxData[
  RowBox[{"0", "x04"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "88854cfb-b769-4980-b06b-1b5586c7de56"],
 " SEC1 tag removed."
}], "Notes",ExpressionUUID->"2fea6bfc-a502-4f77-8e8f-5f4f2cf7b9d9"],

Cell[TextData[{
 "Keccak-256 is not SHA3-256: the two differ in their padding, and the \
Wolfram Language provides both, as ",
 Cell[BoxData["\<\"Keccak256\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "e9727aa3-ddf2-4212-ac27-8b42a162c7d0"],
 " and ",
 Cell[BoxData["\<\"SHA3-256\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "cc4b3699-e5d9-4e01-849c-03c023fbcaa6"],
 "."
}], "Notes",ExpressionUUID->"3e677742-2aba-4d91-92c8-dfbbb43dafdf"],

Cell["\<\
The key may be compressed or uncompressed, as a ByteArray or a hexadecimal \
string, or a BIP32 extended key; the compressed form is decompressed first, \
so both give the same address.\
\>", "Notes",ExpressionUUID->"dbbdf8d1-273b-4aca-a33b-4ada27a22b83"],

Cell[TextData[{
 "The result is ",
 Cell[BoxData[
  RowBox[{"0", "x"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "d507efe2-b986-4376-90e1-58b8c0d794c0"],
 " followed by 40 hexadecimal digits, with the EIP-55 casing: a letter is \
uppercase when the matching nibble of the Keccak-256 hash of the lowercase \
address string is 8 or more."
}], "Notes",ExpressionUUID->"ac89dfe0-b252-4cad-919f-0115e346a7fd"],

Cell[TextData[{
 "The address string form accepts the address with or without the ",
 Cell[BoxData[
  RowBox[{"0", "x"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "3aa67d17-542f-42f2-9d6b-03bd06639d7b"],
 " prefix and in any case, so it can be used to check a transcription."
}], "Notes",ExpressionUUID->"5c33da4d-5d7b-469a-922a-ef6d0d51cd63"],

Cell["\<\
A string that is not 40 hexadecimal digits matches no definition and the call \
is returned unevaluated.\
\>", "Notes",ExpressionUUID->"d6fc9f24-f8f8-481b-80a7-e042261399e3"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"0ed0f33b-c944-48bf-ace8-b9848012eed1"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[
     MatchQ[
      CurrentValue[
       EvaluationNotebook[], {
       TaggingRules, "Openers", "PrimaryExamplesSection"}, Open], 
      Alternatives[True, Open]], 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
   ImageSizeCache->{
    13.600000000000001`, {4.251494140625001, 9.348505859375}}]],
  ExpressionUUID->"64b18c6e-7bec-4f82-ae6d-b274d2b0218f"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"f4d22d18-4f7a-4d63-9505-df42e5117ede"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(13)", "ExampleCount",ExpressionUUID->
  "d8151eb8-a229-42b2-a1b4-2af9a8d201fd"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->364763775,ExpressionUUID->"ed63f681-991f-410a-9fc0-647a789dcb2b"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"7b4e600d-a004-4325-abd8-fd9eaca1f9b3"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "3d32da6e-8ba1-4d34-a833-fcb0f93cb1c4"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"daf3b4c8-12fe-49b4-a89e-06868ec1eb44"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "75a99a1b-16a1-4640-8ad6-b172783bbf66"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1666437887,ExpressionUUID->"7bfe13b1-646b-4a80-9f9b-725f8613e088"],

Cell["\<\
The Ethereum address of a public key, from the ethereum/tests key and address \
fixtures:\
\>", "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"28c20aeb-f971-4a13-9fca-39b4aecc4f7b"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"EthereumAddress", "[", 
  RowBox[{
  "Secp256k1PublicKey", 
   "[", "\"\<c85ef7d79691fe79573b1a7064c19c1a9819ebdbd1faaab1a8ec92344438aaf4\
\>\"", "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"992937e3-c034-4042-a04b-d6f158aa7784"],

Cell[BoxData["\<\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"3ed07a7d-bb02-42e2-bd58-40e60e4cf1d6"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "0eee956e-cd61-48e9-9b0b-da57b1e3299d"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"7fa1376e-9eef-4611-\
b32c-07b93824c572"],

Cell["The second fixture:", "ExampleText",ExpressionUUID->"1ddf9125-6f23-4a11-b5b3-022a018fd721"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"EthereumAddress", "[", 
  RowBox[{
  "Secp256k1PublicKey", 
   "[", "\"\<c87f65ff3f271bf5dc8643484f66b200109caffe4bf98c4cb393dc35740b28c0\
\>\"", "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"572bf917-0998-4f52-8e86-ec5e4cdcbd31"],

Cell[BoxData["\<\"0x13978aee95f38490e9769C39B2773Ed763d9cd5F\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"24b87459-8f51-400e-a8c7-33854ea53bad"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "4e452699-c927-4cb2-9db9-0822c72e4a5c"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"4671579d-0cad-4f30-\
8c0f-8d205073c911"],

Cell["Re-casing an existing address gives its EIP-55 form:", "ExampleText",ExpressionUUID->"03b6226b-c216-4706-9c99-524858ae46df"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"EthereumAddress", 
  "[", "\"\<0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"d790388e-82de-4c6c-9479-cfccfa6f1ddb"],

Cell[BoxData["\<\"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"dc06530a-198e-4779-9f3e-f005ba564ab1"]
}, Open  ]]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "b7e2cb50-cf61-43a4-9a4d-5fd0435800f8"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"f8e4d997-be9c-472c-807f-a56ca16dd549"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(4)", "ExampleCount",ExpressionUUID->
  "007d5fd4-4d33-4140-9818-bb97ccf06256"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"16447718-2cfb-4c07-883b-eff0d81c44ee"],

Cell["\<\
The compressed and uncompressed forms of one key give the same address, \
unlike a Bitcoin address:\
\>", "ExampleText",ExpressionUUID->"98f43b53-ec57-433f-a92c-5f48588e589f"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"EthereumAddress", "[", 
   RowBox[{
   "Secp256k1PublicKey", 
    "[", "\"\<\
c85ef7d79691fe79573b1a7064c19c1a9819ebdbd1faaab1a8ec92344438aaf4\>\"", "]"}], 
   "]"}], " ", "===", " ", 
  RowBox[{"EthereumAddress", "[", 
   RowBox[{"Secp256k1PublicKey", "[", 
    RowBox[{"\"\<\
c85ef7d79691fe79573b1a7064c19c1a9819ebdbd1faaab1a8ec92344438aaf4\>\"", ",", 
     " ", "\"\<Uncompressed\>\""}], "]"}], "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"80c62674-4702-4224-8a9b-87ff1a008add"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"cdb36095-5b90-4f57-8720-866961b6e090"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "1fa1045e-fe9d-45ec-ae81-d9d3155d1e67"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"f015e282-6d28-4c00-\
b661-ba0f88a53beb"],

Cell["\<\
The address of the standard Ethereum derivation path of a BIP39 seed:\
\>", "ExampleText",ExpressionUUID->"041c1667-234e-480c-8a65-bdaf3bb56856"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"EthereumAddress", "[", 
  RowBox[{"BIP32DeriveKey", "[", 
   RowBox[{
    RowBox[{
    "BIP32MasterKey", 
     "[", "\"\<\
5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd3\
70d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4\>\"", "]"}], ",", " ", 
    RowBox[{"BIP32StandardPath", "[", "\"\<Ethereum\>\"", "]"}]}], "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"391a643e-5471-4d97-aa8f-f766d1f4145e"],

Cell[BoxData["\<\"0x9858EfFD232B4033E47d90003D41EC34EcaEda94\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"465906b9-8b4f-47c3-8f6c-d993b28c0a1f"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "3fde186c-0b1b-4839-80f1-398f454c0986"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"ebf80d80-b6df-43dc-\
a80b-0cee62aecc18"],

Cell[TextData[{
 "The ",
 Cell[BoxData[
  RowBox[{"0", "x"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "28f4d036-5dc5-4888-85ea-174129013aa7"],
 " prefix is optional on input:"
}], "ExampleText",ExpressionUUID->"f28ad77f-80e8-49d0-a0eb-6c62a6560268"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"EthereumAddress", 
  "[", "\"\<5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"22bc08ac-397e-4f3e-bb98-9b5cae7144a7"],

Cell[BoxData["\<\"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"0fbcf3de-b9f9-4e6e-b40c-8a739257ffc2"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "f35cea92-1260-4b19-b87a-90cf85896580"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"caa88d9e-df65-4311-\
95f2-401a11484610"],

Cell["A string that is not an address is returned unevaluated:", "ExampleText",ExpressionUUID->"7f6e8eed-a164-4331-bc8b-e644c4d5d41e"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"MatchQ", "[", 
  RowBox[{
   RowBox[{"EthereumAddress", "[", "\"\<0xnothex\>\"", "]"}], ",", " ", 
   "_EthereumAddress"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"851bcf42-30e6-4e92-91cc-5813656ad36b"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"f9f46fbe-47f2-4b7c-9594-4bd93da39540"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "60e2207e-b97b-47b4-b292-7812f1049cba"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"2004cb79-e50e-4b37-8777-c4259b4dc033"],
 "Applications",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "390e9002-c6d2-46a1-bc9c-8d7d5a5dab5b"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->258228157,ExpressionUUID->"5e4fd766-a2e0-4372-a224-ef79d03b6690"],

Cell["\<\
Checking a transcribed address against its checksum, by re-casing it and \
comparing:\
\>", "ExampleText",ExpressionUUID->"e56dfeb6-707e-431c-8fb8-ab444d242d6c"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
  "EthereumAddress", "[", "\"\<0xd1220a0cf47c7b9be7a2e6ba89f429762e7b9adb\>\"",
    "]"}], " ", "===", 
  " ", "\"\<0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb\>\""}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"64c591c4-9a3c-4805-8e2c-4ff5984455bb"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"6e9dbd2d-b4fc-4675-835e-63eb93c4e655"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "fe8020dd-2034-4713-a32d-4bd6f5d648f1"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"680a47b9-7f24-4bda-b07f-f0c4dd576d6f"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "3249a74d-f1a1-4876-8d8e-007591f4ca55"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"7a05aebc-aed5-41d3-b4c8-76ddb70233bf"],

Cell["The four normal ERC-55 test cases:", "ExampleText",ExpressionUUID->"b8f60255-bd6b-45d6-b1f6-f046f5318343"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Map", "[", 
  RowBox[{"EthereumAddress", ",", " ", 
   RowBox[{"{", 
    RowBox[{"\"\<0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed\>\"", ",", 
     " ", "\"\<0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359\>\"", ",", 
     " ", "\"\<0xdbf03b407c01e7cd3cbea99509d93f8dddc8c6fb\>\"", ",", 
     " ", "\"\<0xd1220a0cf47c7b9be7a2e6ba89f429762e7b9adb\>\""}], "}"}]}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5b28910c-5bd7-41bb-bfde-b6e9d34c3c9b"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed\"\>", 
   ",", "\<\"0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359\"\>", 
   ",", "\<\"0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB\"\>", 
   ",", "\<\"0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb\"\>"}], 
  "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"b95bbd2b-38cc-4087-b0dc-131ad7cd946e"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "c80b93f7-319a-4a44-881a-2ce05b241557"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"2b367696-b322-41cb-\
80ea-5875eff845ff"],

Cell["\<\
The two all-caps ERC-55 cases, whose hash nibbles are all 8 or more at every \
letter:\
\>", "ExampleText",ExpressionUUID->"1da5ba27-4eee-4605-b121-acd3e889c145"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Map", "[", 
  RowBox[{"EthereumAddress", ",", " ", 
   RowBox[{"{", 
    RowBox[{"\"\<0x52908400098527886e0f7030069857d2e4169ee7\>\"", ",", 
     " ", "\"\<0x8617e340b3d01fa5f11f306f4090fd50e238070d\>\""}], "}"}]}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"7155a952-1a34-41ca-91b1-96cbab05460e"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"0x52908400098527886E0F7030069857D2E4169EE7\"\>", 
   ",", "\<\"0x8617E340B3D01FA5F11F306F4090FD50E238070D\"\>"}], 
  "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"dc41a012-d1bd-4297-9496-3db9d85fe501"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "8abb2771-0672-43a0-8bac-4a85f81cad34"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"321e77b4-f8cb-431c-\
8e41-e076c146f5b2"],

Cell["\<\
The address is the tail of the Keccak-256 of the key coordinates:\
\>", "ExampleText",ExpressionUUID->"0389cfa7-b854-49eb-9000-82b86a548481"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"ToLowerCase", "[", 
   RowBox[{"EthereumAddress", "[", 
    RowBox[{"Secp256k1PublicKey", "[", "1", "]"}], "]"}], "]"}], " ", "===", 
  " ", 
  RowBox[{"\"\<0x\>\"", " ", "<>", " ", 
   RowBox[{"StringTake", "[", 
    RowBox[{
     RowBox[{"ByteListToHexString", "[", 
      RowBox[{"Normal", "[", 
       RowBox[{"Hash", "[", 
        RowBox[{
         RowBox[{"ByteArray", "[", 
          RowBox[{"Rest", "[", 
           RowBox[{"Normal", "[", 
            RowBox[{"Secp256k1PublicKey", "[", 
             RowBox[{"1", ",", " ", "\"\<Uncompressed\>\""}], "]"}], "]"}], 
           "]"}], "]"}], ",", " ", "\"\<Keccak256\>\"", ",", 
         " ", "\"\<ByteArray\>\""}], "]"}], "]"}], "]"}], ",", " ", 
     RowBox[{"-", "40"}]}], "]"}]}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"746961e0-de0d-4046-a2c2-c20996790d87"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"8bc336d8-58e1-4ab9-b09b-d50040f36831"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "ed9dd1e0-88b6-4ac1-8e20-5183a67318d1"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"ad55fb6c-aad7-45d6-babc-99ebf505860e"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "01b5d55f-8633-403a-a2e0-1fcafb8308d1"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"122e8a60-c1db-46ee-a931-b90b5cbb634e"],

Cell["\<\
Keccak-256 is not the standardised SHA3-256, and using the latter gives a \
plausible but entirely wrong address:\
\>", "ExampleText",ExpressionUUID->"c7b66d89-8985-4ce2-b27c-ca8c73953feb"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"StringTake", "[", 
  RowBox[{
   RowBox[{"ByteListToHexString", "[", 
    RowBox[{"Normal", "[", 
     RowBox[{"Hash", "[", 
      RowBox[{
       RowBox[{"ByteArray", "[", 
        RowBox[{"Rest", "[", 
         RowBox[{"Normal", "[", 
          RowBox[{"Secp256k1PublicKey", "[", 
           RowBox[{"1", ",", " ", "\"\<Uncompressed\>\""}], "]"}], "]"}], 
         "]"}], "]"}], ",", " ", "\"\<SHA3-256\>\"", ",", 
       " ", "\"\<ByteArray\>\""}], "]"}], "]"}], "]"}], ",", " ", 
   RowBox[{"-", "40"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"aa3fd854-22f5-4c52-81cf-2ade6e0f8440"],

Cell[BoxData["\<\"0502987e630ea7ebb2bf1d84a65a727109385bcf\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"5d17119a-2e6d-4de5-b7b2-2bdae45250f0"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "7dc46964-e6c6-4bcd-960f-340270279b23"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"51f785e0-e56f-4f71-\
b22c-9142c26588b2"],

Cell["\<\
An address with only two letters has almost no checksum strength, so EIP-55 \
detects a typo in most addresses but not in every one:\
\>", "ExampleText",ExpressionUUID->"f2cbb0e5-fa4a-4495-b233-00a5df6c6781"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"EthereumAddress", 
  "[", "\"\<0x1111111111111111111111111111111111111111\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"2328abc4-bdd8-4333-8af3-e26408ecfe88"],

Cell[BoxData["\<\"0x1111111111111111111111111111111111111111\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"a0dc6ee0-691e-4590-a734-aeb43a268fe3"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["BitcoinAddress"]], 
           "paclet:WolframInstitute/Puzzles/ref/BitcoinAddress", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "c52672b0-5f20-4a9a-98c1-fd1bb33c9385"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1PublicKey"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1PublicKey", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "a2c7adea-fa22-4d29-a967-e0c11c7e49a8"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["BIP32DeriveKey"]], 
           "paclet:WolframInstitute/Puzzles/ref/BIP32DeriveKey", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "758942eb-b554-4d7b-b8bb-7ed7043d66df"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["BIP32StandardPath"]], 
           "paclet:WolframInstitute/Puzzles/ref/BIP32StandardPath", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "108c08ee-cd9c-475d-a3c9-50724d230b32"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Hash"]], "paclet:ref/Hash"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "9e7962cd-e200-43ec-bef7-dc60aa023df9"]
       }], "SeeAlso",ExpressionUUID->"f33f16df-61b9-4866-92df-167511792b46"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"b84ef436-86c1-4f66-8a89-\
cadf95a0b538"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Derivation"]], 
           "paclet:WolframInstitute/Puzzles/guide/Derivation"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "93b16f4b-80b6-4756-930d-99c3f3d11a22"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"322654b1-36e2-4d0d-99ee-\
f0922aa19d2d"],

Cell[" ", "FooterCell",ExpressionUUID->"a468c6f7-41d1-4fe6-b016-4dec253e3371"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"EthereumAddress",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}, 
    "AllOptsTable" -> Closed}, "NewStyles" -> True, 
  "CitationPopupData" -> $Failed, "ShowCitation" -> False, "HasOptions" -> 
  True, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 37.990478}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[EthereumAddress, paclet : \
WolframInstitute/Puzzles/ref/EthereumAddress, WolframInstitute/Puzzles \
Package Symbol][key] gives the EIP-55 checksummed Ethereum address of a \
public key. PackageLink[EthereumAddress, paclet : \
WolframInstitute/Puzzles/ref/EthereumAddress, WolframInstitute/Puzzles \
Package Symbol][string] renormalises the case of an existing address string \
to its EIP-55 checksum form.", "synonyms" -> {}, "tabletags" -> {}, "title" -> 
    "EthereumAddress", "titlemodifier" -> "", "metadescription" -> "", 
    "windowtitle" -> "EthereumAddress", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/EthereumAddress", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"a5323438-3b1a-42e6-9f4c-752da1a0234f"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[15847, 420, 207, 5, 70, "ExampleText",ExpressionUUID->"28c20aeb-f971-4a13-9fca-39b4aecc4f7b",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 39459, 1085}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[583, 21, 6304, 153, 70, "AnchorBarGrid",ExpressionUUID->"d1958d37-0f97-4b0b-a597-a95a935257c6",
 CellID->1],
Cell[6890, 176, 107, 0, 70, "ContextNameCell",ExpressionUUID->"fad4e0d9-4303-4382-a54a-7c5e0aefc0fc"],
Cell[CellGroupData[{
Cell[7022, 180, 558, 14, 70, "ObjectNameGrid",ExpressionUUID->"5d52de44-d1b1-4d64-a6ec-92526eaf82fa"],
Cell[7583, 196, 1511, 39, 70, "Usage",ExpressionUUID->"fdbd4fa4-36eb-4e38-92b3-6bca27839a16"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9131, 240, 1443, 34, 70, "NotesSection",ExpressionUUID->"d0da7122-9a7d-4ea0-b1d6-3a0048eba7d2",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->210464112],
Cell[10577, 276, 393, 9, 70, "Notes",ExpressionUUID->"2fea6bfc-a502-4f77-8e8f-5f4f2cf7b9d9"],
Cell[10973, 287, 552, 13, 70, "Notes",ExpressionUUID->"3e677742-2aba-4d91-92c8-dfbbb43dafdf"],
Cell[11528, 302, 265, 4, 70, "Notes",ExpressionUUID->"dbbdf8d1-273b-4aca-a33b-4ada27a22b83"],
Cell[11796, 308, 459, 10, 70, "Notes",ExpressionUUID->"ac89dfe0-b252-4cad-919f-0115e346a7fd"],
Cell[12258, 320, 398, 8, 70, "Notes",ExpressionUUID->"5c33da4d-5d7b-469a-922a-ef6d0d51cd63"],
Cell[12659, 330, 184, 3, 70, "Notes",ExpressionUUID->"d6fc9f24-f8f8-481b-80a7-e042261399e3"]
}, Closed]],
Cell[12858, 336, 80, 0, 70, "PageDelimiter",ExpressionUUID->"0ed0f33b-c944-48bf-ace8-b9848012eed1"],
Cell[CellGroupData[{
Cell[12963, 340, 1401, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"ed63f681-991f-410a-9fc0-647a789dcb2b",
 CellID->364763775],
Cell[14367, 379, 216, 4, 70, "Input",ExpressionUUID->"7b4e600d-a004-4325-abd8-fd9eaca1f9b3",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[14608, 387, 1236, 31, 70, "ExampleSection",ExpressionUUID->"7bfe13b1-646b-4a80-9f9b-725f8613e088",
 CellID->1666437887],
Cell[15847, 420, 207, 5, 70, "ExampleText",ExpressionUUID->"28c20aeb-f971-4a13-9fca-39b4aecc4f7b",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[16079, 429, 320, 7, 70, "Input",ExpressionUUID->"992937e3-c034-4042-a04b-d6f158aa7784"],
Cell[16402, 438, 156, 1, 70, "Output",ExpressionUUID->"3ed07a7d-bb02-42e2-bd58-40e60e4cf1d6"]
}, Open  ]],
Cell[CellGroupData[{
Cell[16595, 444, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"7fa1376e-9eef-4611-b32c-07b93824c572"],
Cell[16822, 451, 97, 0, 70, "ExampleText",ExpressionUUID->"1ddf9125-6f23-4a11-b5b3-022a018fd721"],
Cell[CellGroupData[{
Cell[16944, 455, 320, 7, 70, "Input",ExpressionUUID->"572bf917-0998-4f52-8e86-ec5e4cdcbd31"],
Cell[17267, 464, 156, 1, 70, "Output",ExpressionUUID->"24b87459-8f51-400e-a8c7-33854ea53bad"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[17472, 471, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"4671579d-0cad-4f30-8c0f-8d205073c911"],
Cell[17699, 478, 130, 0, 70, "ExampleText",ExpressionUUID->"03b6226b-c216-4706-9c99-524858ae46df"],
Cell[CellGroupData[{
Cell[17854, 482, 247, 4, 70, "Input",ExpressionUUID->"d790388e-82de-4c6c-9479-cfccfa6f1ddb"],
Cell[18104, 488, 156, 1, 70, "Output",ExpressionUUID->"dc06530a-198e-4779-9f3e-f005ba564ab1"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[18321, 496, 1227, 31, 70, "ExampleSection",ExpressionUUID->"16447718-2cfb-4c07-883b-eff0d81c44ee",
 CellID->1293636265],
Cell[19551, 529, 185, 3, 70, "ExampleText",ExpressionUUID->"98f43b53-ec57-433f-a92c-5f48588e589f"],
Cell[CellGroupData[{
Cell[19761, 536, 578, 14, 70, "Input",ExpressionUUID->"80c62674-4702-4224-8a9b-87ff1a008add"],
Cell[20342, 552, 110, 1, 70, "Output",ExpressionUUID->"cdb36095-5b90-4f57-8720-866961b6e090"]
}, Open  ]],
Cell[CellGroupData[{
Cell[20489, 558, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"f015e282-6d28-4c00-b661-ba0f88a53beb"],
Cell[20716, 565, 155, 2, 70, "ExampleText",ExpressionUUID->"041c1667-234e-480c-8a65-bdaf3bb56856"],
Cell[CellGroupData[{
Cell[20896, 571, 522, 12, 70, "Input",ExpressionUUID->"391a643e-5471-4d97-aa8f-f766d1f4145e"],
Cell[21421, 585, 156, 1, 70, "Output",ExpressionUUID->"465906b9-8b4f-47c3-8f6c-d993b28c0a1f"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[21626, 592, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"ebf80d80-b6df-43dc-a80b-0cee62aecc18"],
Cell[21853, 599, 305, 8, 70, "ExampleText",ExpressionUUID->"f28ad77f-80e8-49d0-a0eb-6c62a6560268"],
Cell[CellGroupData[{
Cell[22183, 611, 245, 4, 70, "Input",ExpressionUUID->"22bc08ac-397e-4f3e-bb98-9b5cae7144a7"],
Cell[22431, 617, 156, 1, 70, "Output",ExpressionUUID->"0fbcf3de-b9f9-4e6e-b40c-8a739257ffc2"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[22636, 624, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"caa88d9e-df65-4311-95f2-401a11484610"],
Cell[22863, 631, 134, 0, 70, "ExampleText",ExpressionUUID->"7f6e8eed-a164-4331-bc8b-e644c4d5d41e"],
Cell[CellGroupData[{
Cell[23022, 635, 291, 6, 70, "Input",ExpressionUUID->"851bcf42-30e6-4e92-91cc-5813656ad36b"],
Cell[23316, 643, 110, 1, 70, "Output",ExpressionUUID->"f9f46fbe-47f2-4b7c-9594-4bd93da39540"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[23487, 651, 1233, 31, 70, "ExampleSection",ExpressionUUID->"5e4fd766-a2e0-4372-a224-ef79d03b6690",
 CellID->258228157],
Cell[24723, 684, 171, 3, 70, "ExampleText",ExpressionUUID->"e56dfeb6-707e-431c-8fb8-ab444d242d6c"],
Cell[CellGroupData[{
Cell[24919, 691, 338, 7, 70, "Input",ExpressionUUID->"64c591c4-9a3c-4805-8e2c-4ff5984455bb"],
Cell[25260, 700, 110, 1, 70, "Output",ExpressionUUID->"6e9dbd2d-b4fc-4675-835e-63eb93c4e655"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[25419, 707, 1244, 31, 70, "ExampleSection",ExpressionUUID->"7a05aebc-aed5-41d3-b4c8-76ddb70233bf",
 CellID->2123667759],
Cell[26666, 740, 112, 0, 70, "ExampleText",ExpressionUUID->"b8f60255-bd6b-45d6-b1f6-f046f5318343"],
Cell[CellGroupData[{
Cell[26803, 744, 526, 10, 70, "Input",ExpressionUUID->"5b28910c-5bd7-41bb-bfde-b6e9d34c3c9b"],
Cell[27332, 756, 383, 7, 70, "Output",ExpressionUUID->"b95bbd2b-38cc-4087-b0dc-131ad7cd946e"]
}, Open  ]],
Cell[CellGroupData[{
Cell[27752, 768, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"2b367696-b322-41cb-80ea-5875eff845ff"],
Cell[27979, 775, 172, 3, 70, "ExampleText",ExpressionUUID->"1da5ba27-4eee-4605-b121-acd3e889c145"],
Cell[CellGroupData[{
Cell[28176, 782, 386, 8, 70, "Input",ExpressionUUID->"7155a952-1a34-41ca-91b1-96cbab05460e"],
Cell[28565, 792, 257, 5, 70, "Output",ExpressionUUID->"dc41a012-d1bd-4297-9496-3db9d85fe501"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[28871, 803, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"321e77b4-f8cb-431c-8e41-e076c146f5b2"],
Cell[29098, 810, 151, 2, 70, "ExampleText",ExpressionUUID->"0389cfa7-b854-49eb-9000-82b86a548481"],
Cell[CellGroupData[{
Cell[29274, 816, 914, 22, 70, "Input",ExpressionUUID->"746961e0-de0d-4046-a2c2-c20996790d87"],
Cell[30191, 840, 110, 1, 70, "Output",ExpressionUUID->"8bc336d8-58e1-4ab9-b09b-d50040f36831"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[30362, 848, 1237, 31, 70, "ExampleSection",ExpressionUUID->"122e8a60-c1db-46ee-a931-b90b5cbb634e",
 CellID->1305812373],
Cell[31602, 881, 199, 3, 70, "ExampleText",ExpressionUUID->"c7b66d89-8985-4ce2-b27c-ca8c73953feb"],
Cell[CellGroupData[{
Cell[31826, 888, 677, 16, 70, "Input",ExpressionUUID->"aa3fd854-22f5-4c52-81cf-2ade6e0f8440"],
Cell[32506, 906, 154, 1, 70, "Output",ExpressionUUID->"5d17119a-2e6d-4de5-b7b2-2bdae45250f0"]
}, Open  ]],
Cell[CellGroupData[{
Cell[32697, 912, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"51f785e0-e56f-4f71-b22c-9142c26588b2"],
Cell[32924, 919, 218, 3, 70, "ExampleText",ExpressionUUID->"f2cbb0e5-fa4a-4495-b233-00a5df6c6781"],
Cell[CellGroupData[{
Cell[33167, 926, 247, 4, 70, "Input",ExpressionUUID->"2328abc4-bdd8-4333-8af3-e26408ecfe88"],
Cell[33417, 932, 156, 1, 70, "Output",ExpressionUUID->"a0dc6ee0-691e-4590-a734-aeb43a268fe3"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[33624, 939, 3028, 80, 70, "SeeAlsoSection",ExpressionUUID->"b84ef436-86c1-4f66-8a89-cadf95a0b538"],
Cell[36655, 1021, 700, 19, 70, "MoreAboutSection",ExpressionUUID->"322654b1-36e2-4d0d-99ee-f0922aa19d2d"],
Cell[37358, 1042, 78, 0, 70, "FooterCell",ExpressionUUID->"a468c6f7-41d1-4fe6-b016-4dec253e3371"]
}
]
*)

(* End of internal cache information *)

