(* 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[     24417,        658]
NotebookOptionsPosition[     19409,        574]
NotebookOutlinePosition[     21575,        621]
CellTagsIndexPosition[     21532,        618]
WindowTitle->Oracles
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES GUIDE", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "e018e76a-7cfe-480d-89f7-c09bb21c8120"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "8b93ce82-6c62-41f6-8317-0bc20d473e0e"],
        Background->LightDarkSwitched[
          RGBColor[0.85098, 0.396078, 0]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[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->
          "df5e4805-2e73-4528-886c-2afd4dc21775"]
        }],ExpressionUUID->"959961ef-b8db-4e37-86b3-a216054b8e5a"],
        StripOnInput->False],{
       "\"WolframInstitute/Puzzles/guide/Oracles\"" :> None, 
        "\"Copy Wolfram Documentation Center URL\"" :> 
        CopyToClipboard["WolframInstitute/Puzzles/guide/Oracles"], Delimiter, 
        "\"Copy web URL\"" :> 
        Module[{DocumentationSearch`Private`nb$}, 
          DocumentationSearch`Private`nb$ = 
           NotebookPut[
            Notebook[{
              Cell[BoxData[
                MakeBoxes[
                 Hyperlink[
                  "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/guide/Oracles.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/guide/Oracles" <> ".html"], None}]}]},
       
       Appearance->None,
       MenuAppearance->Automatic,
       MenuStyle->"URLMenu"],
      MouseAppearanceTag["LinkHand"]]],
     LineSpacing->{1.4, 0},ExpressionUUID->
     "9c4caf16-0e39-4a5e-8fb9-72ab56a9158c"]], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "4a76cefa-3d61-498c-8d05-6d22ea78fe3b"]}
  }]], "AnchorBarGrid",
 GridBoxOptions->{GridBoxItemSize->{"Columns" -> {
     Scaled[0.65], {
      Scaled[0.34]}}, "ColumnsIndexed" -> {}, "Rows" -> {{1.}}, 
   "RowsIndexed" -> {}}},
 CellID->1,ExpressionUUID->"d90dfb11-2b91-481c-b2b3-d700ba938e5b"],

Cell[CellGroupData[{

Cell["Oracles", "GuideTitle",
 CellID->942062912,ExpressionUUID->"0da8a467-7483-4fe7-9637-fb65111012dc"],

Cell["\<\
An oracle answers one question as fast as it can be answered: does this \
candidate hit the target? The target may be an address or a set of addresses, \
a digest with an unknown preimage, or a hash chain of stated length. \
Everything here is built for the inner loop of a sweep, so the digests are \
batched, the target set is a hash table, and the throughput of the oracle in \
hand is a measurement rather than a claim.\
\>", "GuideAbstract",
 CellID->2001916300,ExpressionUUID->"b108aa40-09c9-4d50-844b-377cf21d76d0"],

Cell["\t", "GuideDelimiterSubsection",ExpressionUUID->"3d143d73-c75e-4f13-beed-f9f585bf8ead"],

Cell[CellGroupData[{

Cell["Digests and hash chains", "GuideFunctionsSubsection",ExpressionUUID->"abd0cdd7-5f86-43ac-9496-33cebb3333e6"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HashChain"]], "paclet:WolframInstitute/Puzzles/ref/HashChain", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "9607f6df-0a0c-4803-a842-906bb7113f1d"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the ",
 Cell[BoxData[
  StyleBox["n", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "4873d67f-84ea-4479-86a0-6b607b285d6b"],
 "-fold iterated digest of bytes: two iterations of ",
 Cell["\"SHA256\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c636d3d9-d00e-4ecd-b7e1-62171a6b44ae"],
 " is the double SHA-256 behind block ids and Base58Check checksums, ",
 Cell["\"RIPEMD160SHA256\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "867e912c-4c71-4ec7-9f4e-e7af027659a2"],
 " is Bitcoin's HASH160, and ",
 Cell["\"Keccak256\"", "InlineFunctionSansUnlinked",
  FontSize->0.9 Inherited,ExpressionUUID->
  "f7c30de6-95b1-48c6-b48d-3487ef19704b"],
 " is the Ethereum address digest"
}], "GuideText",ExpressionUUID->"4a5d124b-8be8-47d1-a69d-ac5162963f93"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Hash", FontSlant -> "Italic"]]], "paclet:ref/Hash"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "084ef5ff-754e-4cf2-a920-77458e4e37e7"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "a single digest of an expression, a string or a byte array"
}], "GuideText",ExpressionUUID->"a2900156-581e-4bbe-83ef-71247b5006d9"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["$OracleHashMethods"]], 
    "paclet:WolframInstitute/Puzzles/ref/$OracleHashMethods", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "347ce513-40cd-4c8b-a8d2-4fadf31db070"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the digest methods available in the running kernel"
}], "GuideText",ExpressionUUID->"b739f7bf-5e4e-4f93-bf06-10773f827055"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BaseDecode", FontSlant -> "Italic"]]], 
    "paclet:ref/BaseDecode"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "bf811ea7-11b1-482e-b029-7f78f2a178bd"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "reads a hexadecimal or base-64 target into the bytes a digest takes"
}], "GuideText",ExpressionUUID->"11e090e4-d569-4a99-b5e1-050e1db0dc0c"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ByteArray", FontSlant -> "Italic"]]], "paclet:ref/ByteArray"},
   
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b428db70-0cb9-4cbd-87d6-217186184079"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["ByteArrayQ", FontSlant -> "Italic"]]], 
    "paclet:ref/ByteArrayQ"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "c8699f56-969e-4957-afbf-7d2af452cd0e"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["BaseEncode", FontSlant -> "Italic"]]], 
    "paclet:ref/BaseEncode"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "0d44ed5b-7285-41d5-b47e-880af0a873f6"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["IntegerDigits", FontSlant -> "Italic"]]], 
    "paclet:ref/IntegerDigits"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "7cc7fed3-f8bc-4a24-bf67-ce69ac82a73f"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["FromDigits", FontSlant -> "Italic"]]], 
    "paclet:ref/FromDigits"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "55b6f22c-ff0c-42d2-afa8-a96f3d4a4d1c"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"2e445086-036c-4de2-ba6b-cf13a40d6d80"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Targets as oracles", "GuideFunctionsSubsection",ExpressionUUID->"38d81801-b431-43ea-be5c-c6f85650e03d"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PuzzleOracle"]], 
    "paclet:WolframInstitute/Puzzles/ref/PuzzleOracle", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "1eeb48a1-1050-4d4a-8ba9-ffaf4b9ef637"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "a target packaged as a fast predicate over candidates"
}], "GuideText",ExpressionUUID->"17cb2eae-6901-454a-881e-64eb6e174629"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PuzzleOracleQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/PuzzleOracleQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "f7b65500-657f-4cbe-b551-fae04875d08f"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "tests whether an expression is a usable oracle"
}], "GuideText",ExpressionUUID->"c4e25a76-f948-4273-9a7a-37343a276d43"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Select", FontSlant -> "Italic"]]], "paclet:ref/Select"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "ee02eff2-e6f3-4ed6-8fab-dfd806020ee4"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "filters a candidate list with an oracle directly"
}], "GuideText",ExpressionUUID->"9184e99a-ac55-4466-873e-7428f1f4f435"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Lookup", FontSlant -> "Italic"]]], "paclet:ref/Lookup"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "f8e03f38-bb79-450e-97a6-f5db11cb371e"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the hash-table lookup a membership oracle resolves a target set with"
}], "GuideText",ExpressionUUID->"b2d188d6-541c-4996-b290-590292f7dded"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Batch checking", "GuideFunctionsSubsection",ExpressionUUID->"d77ccdbf-5b0e-4579-b289-58a3199ba14f"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["OracleScan"]], 
    "paclet:WolframInstitute/Puzzles/ref/OracleScan", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "b1d0453c-6e05-42dd-a853-c6382367ab36"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "runs an oracle over a whole candidate batch in one pass"
}], "GuideText",ExpressionUUID->"25142d31-14c4-4ac5-9e34-f8ff7f0572a7"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Pick", FontSlant -> "Italic"]]], "paclet:ref/Pick"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "f3655b1f-9650-4e2a-a3cf-543409099d7e"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "selects the candidates a boolean mask marks"
}], "GuideText",ExpressionUUID->"385e046d-7521-421f-80b7-84df742fec28"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Position", FontSlant -> "Italic"]]], "paclet:ref/Position"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "f82c8d75-23fe-4297-bae2-89e493c3f248"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "locates the hits within a batch"
}], "GuideText",ExpressionUUID->"9a3e1398-6465-4606-8cbd-a7875ace6dd0"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Throughput", "GuideFunctionsSubsection",ExpressionUUID->"a4beb309-0494-4d03-991b-a5d627a2960c"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["OracleBenchmark"]], 
    "paclet:WolframInstitute/Puzzles/ref/OracleBenchmark", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "990b567d-209b-40c5-8a20-9f7bcc44048a"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "measures candidates per second for the oracle in hand"
}], "GuideText",ExpressionUUID->"aa5eba60-1de5-4902-9dd8-a3db12a62b4b"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["$OracleCompiledDigests"]], 
    "paclet:WolframInstitute/Puzzles/ref/$OracleCompiledDigests", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "62ae42f0-b809-4598-90b5-386875537442"],
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "the digests with a validated compiled kernel, and how each was compiled"
}], "GuideText",ExpressionUUID->"2f59ede9-e1db-442e-b018-2346a563d105"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["AbsoluteTiming", FontSlant -> "Italic"]]], 
    "paclet:ref/AbsoluteTiming"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "9344916d-2bd7-4ba9-bd13-e49411096d57"],
 " (WL)",
 " ",
 StyleBox["\[LongDash]", "GuideEmDash"],
 " ",
 "times a real scan, including the work a benchmark leaves out"
}], "GuideText",ExpressionUUID->"dfc83a9e-8bdd-48b3-9d3b-b08eb884d988"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Compile", FontSlant -> "Italic"]]], "paclet:ref/Compile"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "a8fb768f-056b-4f77-bef2-29c8350ccdfb"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["CompilationTarget", FontSlant -> "Italic"]]], 
    "paclet:ref/CompilationTarget"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "0634f264-cc34-41ef-a8ef-cf7e3f43d27c"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["Parallelize", FontSlant -> "Italic"]]], 
    "paclet:ref/Parallelize"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "0e21b918-dc2e-4aae-b30d-9b715c7f2095"],
 " (WL)",
 ", ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData[
      StyleBox["RepeatedTiming", FontSlant -> "Italic"]]], 
    "paclet:ref/RepeatedTiming"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFunctionSansUnlinked",ExpressionUUID->
  "38725aaf-42d6-4371-b6e0-84d82f196d2e"],
 " (WL)",
 "\[Ellipsis]"
}], "GuideText",ExpressionUUID->"403d948e-6a35-420e-a007-44219534927f"]
}, Open  ]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedTutorial.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Tech", " ", "Notes"}], "GuideTutorialsSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["CrackingTheBitcoinMovieEnigma"]], 
           "paclet:WolframInstitute/Puzzles/tutorial/\
CrackingTheBitcoinMovieEnigma"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "a6ec66b3-0b88-4291-b4b9-8d2d4deb8ae7"]], "GuideTutorial",
         ExpressionUUID->"f6d2d325-4575-4f6a-a825-3cbfc6a8c1cb"]}]}
     }]}
  }]], "GuideTutorialsSection",ExpressionUUID->"393ba214-f31e-41ec-ab97-\
3699cc772245"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "GuideMoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Puzzles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Puzzles"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "13cb6931-dfcc-48a0-abcf-a2f1e6f0a67b"]], "GuideMoreAbout",
         ExpressionUUID->"ea475ee9-9d28-43c3-b163-ca746c1e9ada"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Derivation"]], 
           "paclet:WolframInstitute/Puzzles/guide/Derivation"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "9e3290ee-b55b-4682-885a-64f5633b1b3b"]], "GuideMoreAbout",
         ExpressionUUID->"d09e886f-d731-4800-8bae-6d769f9cf7e5"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Search"]], 
           "paclet:WolframInstitute/Puzzles/guide/Search"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "b00a51c2-5057-4770-a025-150a5d017a4e"]], "GuideMoreAbout",
         ExpressionUUID->"513b060a-244f-4629-b6a5-c425f974de5b"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Encodings"]], 
           "paclet:WolframInstitute/Puzzles/guide/Encodings"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "5819d92d-9cb9-43b9-9f75-596b15d48465"]], "GuideMoreAbout",
         ExpressionUUID->"42ff47dd-3f97-4754-8747-c1d9b80e893b"]}]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[TextData[Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Seeds"]], "paclet:WolframInstitute/Puzzles/guide/Seeds"},
          "RefLinkPlain",
          BaseStyle->{"InlineFormula"}]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "8f24ff9c-f122-4250-bd4b-978d4d011281"]], "GuideMoreAbout",
         ExpressionUUID->"2601617f-66da-4c30-923c-3fa417ea54e5"]}]}
     }]}
  }]], "GuideMoreAboutSection",ExpressionUUID->"1ee1117c-5f6f-4740-a63d-\
9d7fd6db240a"],

Cell[" ", "FooterCell",ExpressionUUID->"f8d5cbb0-6f73-4874-8107-24f693a7f54b"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"Oracles",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}}, 
  "NewStyles" -> True, "CitationPopupData" -> {$Failed, ""}, "ShowCitation" -> 
  False, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 20.609177}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {
     "oracle", "hash chain", "double SHA-256", "HASH160", "address matching", 
      "preimage", "batch verification", "throughput", "bitcoin", "ethereum"}, 
    "specialkeywords" -> {}, "tutorialcollectionlinks" -> {}, "index" -> True,
     "label" -> "Wolfram Institute/ Puzzles Guide", "language" -> "en", 
    "paclet" -> "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "An oracle answers one question as fast as it can be answered: does this \
candidate hit the target? The target may be an address or a set of addresses, \
a digest with an unknown preimage, or a hash chain of stated length. \
Everything here is built for the inner loop of a sweep, so the digests are \
batched, the target set is a hash table, and the throughput of the oracle in \
hand is a measurement rather than a claim.", "synonyms" -> {}, 
    "tabletags" -> {}, "title" -> "Oracles", "titlemodifier" -> "", 
    "metadescription" -> "", "windowtitle" -> "Oracles", "type" -> "Guide", 
    "uri" -> "WolframInstitute/Puzzles/guide/Oracles", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
CacheGraphics->False,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"1f30461e-0e67-4f3d-b9a7-a4bd7677bbf4"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[575, 21, 3042, 74, 70, "AnchorBarGrid",ExpressionUUID->"d90dfb11-2b91-481c-b2b3-d700ba938e5b",
 CellID->1],
Cell[CellGroupData[{
Cell[3642, 99, 104, 1, 70, "GuideTitle",ExpressionUUID->"0da8a467-7483-4fe7-9637-fb65111012dc",
 CellID->942062912],
Cell[3749, 102, 532, 8, 70, "GuideAbstract",ExpressionUUID->"b108aa40-09c9-4d50-844b-377cf21d76d0",
 CellID->2001916300],
Cell[4284, 112, 93, 0, 70, "GuideDelimiterSubsection",ExpressionUUID->"3d143d73-c75e-4f13-beed-f9f585bf8ead"],
Cell[CellGroupData[{
Cell[4402, 116, 114, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"abd0cdd7-5f86-43ac-9496-33cebb3333e6"],
Cell[4519, 118, 1246, 31, 70, "GuideText",ExpressionUUID->"4a5d124b-8be8-47d1-a69d-ac5162963f93"],
Cell[5768, 151, 473, 14, 70, "GuideText",ExpressionUUID->"a2900156-581e-4bbe-83ef-71247b5006d9"],
Cell[6244, 167, 525, 14, 70, "GuideText",ExpressionUUID->"b739f7bf-5e4e-4f93-bf06-10773f827055"],
Cell[6772, 183, 499, 15, 70, "GuideText",ExpressionUUID->"11e090e4-d569-4a99-b5e1-050e1db0dc0c"],
Cell[7274, 200, 1573, 56, 70, "GuideText",ExpressionUUID->"2e445086-036c-4de2-ba6b-cf13a40d6d80"]
}, Open  ]],
Cell[CellGroupData[{
Cell[8884, 261, 109, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"38d81801-b431-43ea-be5c-c6f85650e03d"],
Cell[8996, 263, 516, 14, 70, "GuideText",ExpressionUUID->"17cb2eae-6901-454a-881e-64eb6e174629"],
Cell[9515, 279, 511, 14, 70, "GuideText",ExpressionUUID->"c4e25a76-f948-4273-9a7a-37343a276d43"],
Cell[10029, 295, 467, 14, 70, "GuideText",ExpressionUUID->"9184e99a-ac55-4466-873e-7428f1f4f435"],
Cell[10499, 311, 487, 14, 70, "GuideText",ExpressionUUID->"b2d188d6-541c-4996-b290-590292f7dded"]
}, Open  ]],
Cell[CellGroupData[{
Cell[11023, 330, 105, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"d77ccdbf-5b0e-4579-b289-58a3199ba14f"],
Cell[11131, 332, 514, 14, 70, "GuideText",ExpressionUUID->"25142d31-14c4-4ac5-9e34-f8ff7f0572a7"],
Cell[11648, 348, 458, 14, 70, "GuideText",ExpressionUUID->"385e046d-7521-421f-80b7-84df742fec28"],
Cell[12109, 364, 454, 14, 70, "GuideText",ExpressionUUID->"9a3e1398-6465-4606-8cbd-a7875ace6dd0"]
}, Open  ]],
Cell[CellGroupData[{
Cell[12600, 383, 101, 0, 70, "GuideFunctionsSubsection",ExpressionUUID->"a4beb309-0494-4d03-991b-a5d627a2960c"],
Cell[12704, 385, 522, 14, 70, "GuideText",ExpressionUUID->"aa5eba60-1de5-4902-9dd8-a3db12a62b4b"],
Cell[13229, 401, 554, 14, 70, "GuideText",ExpressionUUID->"2f59ede9-e1db-442e-b018-2346a563d105"],
Cell[13786, 417, 500, 15, 70, "GuideText",ExpressionUUID->"dfc83a9e-8bdd-48b3-9d3b-b08eb884d988"],
Cell[14289, 434, 1288, 44, 70, "GuideText",ExpressionUUID->"403d948e-6a35-420e-a007-44219534927f"]
}, Open  ]]
}, Open  ]],
Cell[15604, 482, 898, 22, 70, "GuideTutorialsSection",ExpressionUUID->"393ba214-f31e-41ec-ab97-3699cc772245"],
Cell[16505, 506, 2819, 64, 70, "GuideMoreAboutSection",ExpressionUUID->"1ee1117c-5f6f-4740-a63d-9d7fd6db240a"],
Cell[19327, 572, 78, 0, 70, "FooterCell",ExpressionUUID->"f8d5cbb0-6f73-4874-8107-24f693a7f54b"]
}
]
*)

(* End of internal cache information *)

