This commit is contained in:
realaravinth 2021-09-01 08:58:09 +00:00
parent bc27fb0928
commit edba9338dc
5 changed files with 7 additions and 7 deletions

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
<!doctype html><html lang=en-us><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="ie=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><link rel=preload as=font href=/fonts/vendor/jost/jost-v4-latin-regular.woff2 type=font/woff2 crossorigin><link rel=preload as=font href=/fonts/vendor/jost/jost-v4-latin-700.woff2 type=font/woff2 crossorigin><link rel=stylesheet href=/main.d731b24f97a905b851b9151339aca0f6a9b1c45ed16584cee7a4113d98d2a3db570c096603fbf15fbe9bbf092715cc742abaea351b4767239dbfedfffc08ebdb.css integrity="sha512-1zGyT5epBbhRuRUTOayg9qmxxF7RZYTO56QRPZjSo9tXDAlmA/vxX76bvwknFcx0KrrqNRtHZyOdv+3//Ajr2w==" crossorigin=anonymous><noscript><style>img.lazyload{display:none}</style></noscript><meta name=robots content="index, follow"><meta name=googlebot content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"><meta name=bingbot content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"><title>PoW performance - mCaptcha</title><meta name=description content="PoW performance of native and WASM implementations. Does the native implementation have and edge over the WASM library?"><link rel=canonical href=/blog/pow-performance/><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="/blog/pow-performance/icon.png"><meta name=twitter:title content="PoW performance"><meta name=twitter:description content="PoW performance of native and WASM implementations. Does the native implementation have and edge over the WASM library?"><meta name=twitter:site content="@"><meta name=twitter:creator content="@"><meta property="og:title" content="PoW performance"><meta property="og:description" content="PoW performance of native and WASM implementations. Does the native implementation have and edge over the WASM library?"><meta property="og:type" content="article"><meta property="og:url" content="/blog/pow-performance/"><meta property="og:image" content="/blog/pow-performance/icon.png"><meta property="article:published_time" content="2021-05-26T00:00:00+00:00"><meta property="article:modified_time" content="2021-09-01T13:46:31+05:30"><meta property="og:site_name" content="mCaptcha"><meta property="article:publisher" content="https://www.facebook.com/"><meta property="article:author" content="https://www.facebook.com/"><meta property="og:locale" content="en_US"><script type=application/ld+json>{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"\/"},{"@type":"ListItem","position":2,"name":"Blogpow Performance","item":"\/blogpow-performance\/"}]}</script><meta name=theme-color content="#fff"><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=manifest href=/site.webmanifest></head><body class="blog single"><div class="header-bar fixed-top"></div><header class="navbar fixed-top navbar-expand-md navbar-light"><div class=container><input class="menu-btn order-0" type=checkbox id=menu-btn>
<!doctype html><html lang=en-us><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="ie=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><link rel=preload as=font href=/fonts/vendor/jost/jost-v4-latin-regular.woff2 type=font/woff2 crossorigin><link rel=preload as=font href=/fonts/vendor/jost/jost-v4-latin-700.woff2 type=font/woff2 crossorigin><link rel=stylesheet href=/main.d731b24f97a905b851b9151339aca0f6a9b1c45ed16584cee7a4113d98d2a3db570c096603fbf15fbe9bbf092715cc742abaea351b4767239dbfedfffc08ebdb.css integrity="sha512-1zGyT5epBbhRuRUTOayg9qmxxF7RZYTO56QRPZjSo9tXDAlmA/vxX76bvwknFcx0KrrqNRtHZyOdv+3//Ajr2w==" crossorigin=anonymous><noscript><style>img.lazyload{display:none}</style></noscript><meta name=robots content="index, follow"><meta name=googlebot content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"><meta name=bingbot content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1"><title>PoW performance - mCaptcha</title><meta name=description content="PoW performance of native and WASM implementations. Does the native implementation have and edge over the WASM library?"><link rel=canonical href=/blog/pow-performance/><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="/blog/pow-performance/icon.png"><meta name=twitter:title content="PoW performance"><meta name=twitter:description content="PoW performance of native and WASM implementations. Does the native implementation have and edge over the WASM library?"><meta name=twitter:site content="@"><meta name=twitter:creator content="@"><meta property="og:title" content="PoW performance"><meta property="og:description" content="PoW performance of native and WASM implementations. Does the native implementation have and edge over the WASM library?"><meta property="og:type" content="article"><meta property="og:url" content="/blog/pow-performance/"><meta property="og:image" content="/blog/pow-performance/icon.png"><meta property="article:published_time" content="2021-05-26T00:00:00+00:00"><meta property="article:modified_time" content="2021-09-01T14:27:17+05:30"><meta property="og:site_name" content="mCaptcha"><meta property="article:publisher" content="https://www.facebook.com/"><meta property="article:author" content="https://www.facebook.com/"><meta property="og:locale" content="en_US"><script type=application/ld+json>{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"\/"},{"@type":"ListItem","position":2,"name":"Blogpow Performance","item":"\/blogpow-performance\/"}]}</script><meta name=theme-color content="#fff"><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=manifest href=/site.webmanifest></head><body class="blog single"><div class="header-bar fixed-top"></div><header class="navbar fixed-top navbar-expand-md navbar-light"><div class=container><input class="menu-btn order-0" type=checkbox id=menu-btn>
<label class="menu-icon d-md-none" for=menu-btn><span class=navicon></span></label><a class="navbar-brand order-1 order-md-0 me-auto" href=/>mCaptcha</a>
<button id=mode class="btn btn-link order-2 order-md-4" type=button aria-label="Toggle mode">
<span class=toggle-dark><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg></span><span class=toggle-light><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></span></button><ul class="navbar-nav social-nav order-3 order-md-5"><li class=nav-item><a class=nav-link href=https://github.com/mCaptcha><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-github"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></svg><span class="ms-2 visually-hidden">GitHub</span></a></li></ul><div class="collapse navbar-collapse order-4 order-md-1"><ul class="navbar-nav main-nav me-auto order-5 order-md-2"><li class=nav-item><a class=nav-link href=/about/>About</a></li><li class="nav-item active"><a class=nav-link href=/blog/>Blog</a></li><li class=nav-item><a class=nav-link href=/community/>Community</a></li><li class=nav-item><a class=nav-link href=/contact/>Contact</a></li><li class=nav-item><a class=nav-link href=/docs/prologue/introduction/>Docs</a></li></ul><div class="break order-6 d-md-none"></div><form class="navbar-form flex-grow-1 order-7 order-md-3"><input id=userinput class="form-control is-search" type=search placeholder="Search docs..." aria-label="Search docs..." autocomplete=off><div id=suggestions class="shadow bg-white rounded"></div></form></div></div></header><div class="wrap container" role=document><div class=content><div class="row flex-xl-nowrap"><nav class="docs-toc d-none d-xl-block col-xl-3" aria-label="Secondary navigation"><div class=page-links><h3>On this page</h3><nav id=TableOfContents><ul><li><a href=#benchmark-tools>Benchmark tools</a></li><li><a href=#results>Results</a><ul><li><a href=#native>Native</a></li><li><a href=#browser>Browser</a></li><li><a href=#firefox>Firefox</a></li></ul></li><li><a href=#conclusion>Conclusion</a></li></ul></nav></div></nav><main class="docs-content col-lg-11 col-xl-9 mx-xl-auto"><article><div class=blog-header><h1>PoW performance</h1><p><small>Posted May 26, 2021 by <a class="stretched-link position-relative" href=/contributors/aravinth-manivannan/>Aravinth Manivannan</a>&nbsp;&dash;&nbsp;<strong>3&nbsp;min read</strong></small><p><p><small>Last Edited September 1, 2021</small><p></div><p class=lead>We are mCaptcha. We build kickass CAPTCHA systems that gives (DDoS) attackers a run for their money. And we do all of this without tracking your users. Oh and did I mention our UX is great?</p><p>mCaptcha uses a
<span class=toggle-dark><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg></span><span class=toggle-light><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></span></button><ul class="navbar-nav social-nav order-3 order-md-5"><li class=nav-item><a class=nav-link href=https://github.com/mCaptcha><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-github"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></svg><span class="ms-2 visually-hidden">GitHub</span></a></li></ul><div class="collapse navbar-collapse order-4 order-md-1"><ul class="navbar-nav main-nav me-auto order-5 order-md-2"><li class=nav-item><a class=nav-link href=/about/>About</a></li><li class="nav-item active"><a class=nav-link href=/blog/>Blog</a></li><li class=nav-item><a class=nav-link href=/community/>Community</a></li><li class=nav-item><a class=nav-link href=/contact/>Contact</a></li><li class=nav-item><a class=nav-link href=/docs/prologue/introduction/>Docs</a></li></ul><div class="break order-6 d-md-none"></div><form class="navbar-form flex-grow-1 order-7 order-md-3"><input id=userinput class="form-control is-search" type=search placeholder="Search docs..." aria-label="Search docs..." autocomplete=off><div id=suggestions class="shadow bg-white rounded"></div></form></div></div></header><div class="wrap container" role=document><div class=content><div class="row flex-xl-nowrap"><nav class="docs-toc d-none d-xl-block col-xl-3" aria-label="Secondary navigation"><div class=page-links><h3>On this page</h3><nav id=TableOfContents><ul><li><a href=#benchmark-tools>Benchmark tools</a></li><li><a href=#results>Results</a><ul><li><a href=#native>Native</a></li><li><a href=#browser>Browser</a></li><li><a href=#firefox>Firefox</a></li></ul></li><li><a href=#conclusion>Conclusion</a></li></ul></nav></div></nav><main class="docs-content col-lg-11 col-xl-9 mx-xl-auto"><article><div class=blog-header><h1>PoW performance</h1><p><small>Posted May 26, 2021 by <a class="stretched-link position-relative" href=/contributors/aravinth-manivannan/>Aravinth Manivannan</a>&nbsp;&dash;&nbsp;<strong>2&nbsp;min read</strong></small><p><p><small>Last Edited September 1, 2021</small><p></div><p class=lead>We are mCaptcha. We build kickass CAPTCHA systems that gives (DDoS) attackers a run for their money. And we do all of this without tracking your users. Oh and did I mention our UX is great?</p><p>mCaptcha uses a
<a href=https://en.wikipedia.org/wiki/Proof_of_work>proof-of-work(PoW)</a> mechanism
to rate limit users or potential bots. In order for this to be
effective, the PoW should be configured properly. The difficulty
@ -12,7 +12,7 @@ capable of running in a multi-threaded context. This creates an unfair
advantage for crackers using these bots over legitimate users, who
usually use browsers to access a website.</p><p>I wanted to see how much of an advantage a native program would have
over our WASM library.</p><h2 id=benchmark-tools>Benchmark tools</h2><p>So I wrote these to compare native and WASM performances:</p><ul><li>Browser benchmark: <a href=https://mCaptcha.github.io/benches>https://mCaptcha.github.io/benches</a></li><li>Native benchmark: <a href=https://github.com/mCaptcha/cli/blob/master/scripts/bench.sh>mCaptcha/cli managed by scripts/bench.sh</a></li></ul><div class="alert alert-warning d-flex" role=alert><div class="flex-shrink-1 alert-icon"></div><div class=w-100>Feel free to reproduce the results!</div></div><h2 id=results>Results</h2><p>The tests were run on my development machine featuring an Intel Core
i7-9750h.</p><h3 id=native>Native</h3><table><thead><tr><th>Difficulty</th><th>Real</th><th>User</th><th>Sys</th></tr></thead><tbody><tr><td>50000</td><td>0m0.040s</td><td>0m0.040s</td><td>0m0.000s</td></tr><tr><td>300000</td><td>0m0.122s</td><td>0m0.122s</td><td>0m0.000s</td></tr><tr><td>550000</td><td>0m0.124s</td><td>0m0.119s</td><td>0m0.003s</td></tr><tr><td>800000</td><td>0m0.123s</td><td>0m0.118s</td><td>0m0.003s</td></tr><tr><td>1050000</td><td>0m0.933s</td><td>0m0.932s</td><td>0m0.000s</td></tr><tr><td>1300000</td><td>0m1.227s</td><td>-</td><td>0m0.007s</td></tr><tr><td>1550000</td><td>0m1.260s</td><td>0m1.256s</td><td>0m0.003s</td></tr><tr><td>1800000</td><td>0m1.243s</td><td>0m1.242s</td><td>0m0.000s</td></tr><tr><td>2050000</td><td>0m2.524s</td><td>0m2.510s</td><td>0m0.000s</td></tr><tr><td>2300000</td><td>0m2.545s</td><td>0m2.543s</td><td>0m0.000s</td></tr><tr><td>2550000</td><td>0m2.561s</td><td>0m2.551s</td><td>0m0.004s</td></tr><tr><td>2800000</td><td>0m2.555s</td><td>0m2.540s</td><td>0m0.006s</td></tr><tr><td>3050000</td><td>0m2.513s</td><td>0m2.508s</td><td>0m0.000s</td></tr><tr><td>3300000</td><td>0m2.484s</td><td>0m2.481s</td><td>0m0.000s</td></tr><tr><td>3550000</td><td>0m2.643s</td><td>0m2.642s</td><td>0m0.000s</td></tr><tr><td>3800000</td><td>0m2.663s</td><td>0m2.661s</td><td>0m0.000s</td></tr><tr><td>4050000</td><td>0m2.663s</td><td>0m2.660s</td><td>0m0.000s</td></tr><tr><td>4300000</td><td>0m2.689s</td><td>0m2.683s</td><td>0m0.004s</td></tr><tr><td>4550000</td><td>0m2.688s</td><td>0m2.686s</td><td>0m0.000s</td></tr><tr><td>4800000</td><td>0m2.517s</td><td>0m2.509s</td><td>0m0.003s</td></tr></tbody></table><h3 id=browser>Browser</h3><p>I ran the tests on both Firefox and Chromium to compare results</p><h3 id=firefox>Firefox</h3><ul><li><strong>User Agent:</strong> <code>Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0</code></li><li><strong>Hardware concurrency:</strong> 12</li></ul><table><thead><tr><th>Difficulty</th><th>Duration(in ms)</th></tr></thead><tbody><tr><td>500000</td><td>401</td></tr><tr><td>1000000</td><td>413</td></tr><tr><td>1500000</td><td>398</td></tr><tr><td>2000000</td><td>394</td></tr><tr><td>2500000</td><td>1495</td></tr><tr><td>3000000</td><td>1556</td></tr><tr><td>3500000</td><td>3971</td></tr><tr><td>4000000</td><td>4235</td></tr><tr><td>4500000</td><td>4116</td></tr></tbody></table><blockquote><p>To be fair, my Firefox installation is loaded with a gazillion
i7-9750h.</p><h3 id=native>Native</h3><table><thead><tr><th>Difficulty</th><th>Real</th><th>User</th><th>Sys</th></tr></thead><tbody><tr><td>500000</td><td>0m0.220s</td><td>0m0.197s</td><td>0m0.006s</td></tr><tr><td>1000000</td><td>0m0.203s</td><td>0m0.203s</td><td>0m0.000s</td></tr><tr><td>1500000</td><td>0m0.198s</td><td>0m0.198s</td><td>0m0.000s</td></tr><tr><td>2000000</td><td>0m0.203s</td><td>0m0.203s</td><td>0m0.000s</td></tr><tr><td>2500000</td><td>0m0.758s</td><td>0m0.752s</td><td>0m0.003s</td></tr><tr><td>3000000</td><td>0m0.776s</td><td>0m0.769s</td><td>0m0.003s</td></tr><tr><td>3500000</td><td>0m2.010s</td><td>0m1.998s</td><td>0m0.000s</td></tr><tr><td>4000000</td><td>0m2.038s</td><td>0m2.033s</td><td>0m0.003s</td></tr><tr><td>4500000</td><td>0m2.014s</td><td>0m2.013s</td><td>0m0.000s</td></tr></tbody></table><h3 id=browser>Browser</h3><p>I ran the tests on both Firefox and Chromium to compare results</p><h3 id=firefox>Firefox</h3><ul><li><strong>User Agent:</strong> <code>Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0</code></li><li><strong>Hardware concurrency:</strong> 12</li></ul><table><thead><tr><th>Difficulty</th><th>Duration(in ms)</th></tr></thead><tbody><tr><td>500000</td><td>401</td></tr><tr><td>1000000</td><td>413</td></tr><tr><td>1500000</td><td>398</td></tr><tr><td>2000000</td><td>394</td></tr><tr><td>2500000</td><td>1495</td></tr><tr><td>3000000</td><td>1556</td></tr><tr><td>3500000</td><td>3971</td></tr><tr><td>4000000</td><td>4235</td></tr><tr><td>4500000</td><td>4116</td></tr></tbody></table><blockquote><p>To be fair, my Firefox installation is loaded with a gazillion
extensions while the Chromium instance is clean, as I don&rsquo;t use it
much</p></blockquote><h4 id=chromium>Chromium</h4><ul><li><strong>User Agent:</strong> <code>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36</code></li><li><strong>Hardware concurrency:</strong> 12</li></ul><table><thead><tr><th>Difficulty</th><th>Duration(in ms)</th></tr></thead><tbody><tr><td>500000</td><td>399.40000000037253</td></tr><tr><td>1000000</td><td>354.6000000014901</td></tr><tr><td>1500000</td><td>351.19999999925494</td></tr><tr><td>2000000</td><td>353.80000000074506</td></tr><tr><td>2500000</td><td>1337.800000000745</td></tr><tr><td>3000000</td><td>1311.199999999255</td></tr><tr><td>3500000</td><td>3417.5999999996275</td></tr><tr><td>4000000</td><td>3488.800000000745</td></tr><tr><td>4500000</td><td>3458.2999999988824</td></tr></tbody></table><h2 id=conclusion>Conclusion</h2><p>At the highest difficulty factor, the native implementation was a almost second
faster than the WASM library. But the fact that both of them were able

View file

@ -1 +1 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/pow-performance/</loc><lastmod>2021-09-01T13:46:31+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/blog/say-hello-to-mcaptcha/</loc><lastmod>2021-05-27T18:12:01+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/pow-performance/</loc><lastmod>2021-09-01T14:27:17+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/blog/say-hello-to-mcaptcha/</loc><lastmod>2021-05-27T18:12:01+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset>

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/pow-performance/</loc><lastmod>2021-09-01T13:46:31+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/blog/say-hello-to-mcaptcha/</loc><lastmod>2021-05-27T18:12:01+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/api/mcaptcha-system/</loc><lastmod>2021-04-10T17:08:46+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/getting-started/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/prologue/introduction/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/api/browser/</loc><lastmod>2021-03-11T11:29:26+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/docker/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/bare-metal/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/api/pow-sha256/</loc><lastmod>2021-04-01T22:58:38+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/dependencies/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/help/troubleshooting/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/help/faq/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/about/</loc><lastmod>2021-05-27T16:28:59+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/donate/</loc><lastmod>2021-07-16T21:58:39+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/contributors/aravinth-manivannan/</loc><lastmod>2021-05-26T14:18:41+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/contributors/</loc><lastmod>2021-05-26T14:18:41+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/privacy-policy/</loc><lastmod>2021-05-27T19:15:04+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/community/</loc><lastmod>2021-05-27T18:12:01+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/security/</loc><lastmod>2021-05-27T19:15:04+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/thanks/</loc><lastmod>2021-05-27T20:25:33+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/</loc><lastmod>2021-03-09T18:56:02+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/help/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/prologue/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/api/</loc><lastmod>2021-03-11T10:37:50+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/contact/</loc><lastmod>2021-05-27T18:12:01+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/blog/</loc><lastmod>2021-05-26T14:18:41+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/blog/pow-performance/</loc><lastmod>2021-09-01T14:27:17+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/blog/say-hello-to-mcaptcha/</loc><lastmod>2021-05-27T18:12:01+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/api/mcaptcha-system/</loc><lastmod>2021-04-10T17:08:46+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/getting-started/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/prologue/introduction/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/api/browser/</loc><lastmod>2021-03-11T11:29:26+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/docker/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/bare-metal/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/api/pow-sha256/</loc><lastmod>2021-04-01T22:58:38+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/dependencies/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/help/troubleshooting/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/help/faq/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/about/</loc><lastmod>2021-05-27T16:28:59+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/donate/</loc><lastmod>2021-07-16T21:58:39+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/contributors/aravinth-manivannan/</loc><lastmod>2021-05-26T14:18:41+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/contributors/</loc><lastmod>2021-05-26T14:18:41+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/privacy-policy/</loc><lastmod>2021-05-27T19:15:04+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/community/</loc><lastmod>2021-05-27T18:12:01+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/security/</loc><lastmod>2021-05-27T19:15:04+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/thanks/</loc><lastmod>2021-05-27T20:25:33+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/</loc><lastmod>2021-03-09T18:56:02+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/help/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/prologue/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/api/</loc><lastmod>2021-03-11T10:37:50+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/contact/</loc><lastmod>2021-05-27T18:12:01+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/blog/</loc><lastmod>2021-05-26T14:18:41+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>/docs/self-hosted/</loc><lastmod>2021-07-21T15:49:53+05:30</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset>