diff --git a/blog/index.html b/blog/index.html index 2d3d7e3..720bdc3 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,4 +1,4 @@ Blog - mCaptcha

Blog

PoW performance

PoW performance of native and WASM implementations. Does the native implementation have and edge over the WASM library?

Posted May 26, 2021 by Aravinth Manivannan ‐ 2 min read

Last Edited September 1, 2021

Say hello to mCaptcha

Introducing mCaptcha, a kickass CAPTCHA systems that gives (DDoS) attackers a run for their money. Oh and UX is great too!

Posted May 26, 2021 by Aravinth Manivannan ‐ 2 min read

Last Edited May 27, 2021

\ No newline at end of file +

Blog

PoW performance

PoW performance of native and WASM implementations. Does the native implementation have and edge over the WASM library?

Posted May 26, 2021 by Aravinth Manivannan ‐ 3 min read

Last Edited September 1, 2021

Say hello to mCaptcha

Introducing mCaptcha, a kickass CAPTCHA systems that gives (DDoS) attackers a run for their money. Oh and UX is great too!

Posted May 26, 2021 by Aravinth Manivannan ‐ 2 min read

Last Edited May 27, 2021

\ No newline at end of file diff --git a/blog/pow-performance/index.html b/blog/pow-performance/index.html index 7df8858..d625322 100644 --- a/blog/pow-performance/index.html +++ b/blog/pow-performance/index.html @@ -1,7 +1,7 @@ -PoW performance - mCaptcha

PoW performance

Posted May 26, 2021 by Aravinth Manivannan ‐ 3 min read

Last Edited September 1, 2021

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?

mCaptcha uses a proof-of-work(PoW) mechanism to rate limit users or potential bots. In order for this to be effective, the PoW should be configured properly. The difficulty @@ -10,12 +10,16 @@ the client-side while at the same time, it shouldn’t be too low, as it wouldn’t offer proper protection against bots.

Malicious bots(the ones that wreak havoc), run native code which is capable of running in a multi-threaded context. This creates an unfair advantage for crackers using these bots over legitimate users, who -usually | browsers to access a website. I wanted to see how much of -an advantage a native program would have over our WASM library.

Benchmark tools

So I wrote these to compare native and WASM performances:

Results

The tests were run on my development machine featuring an Intel Core +usually use browsers to access a website.

I wanted to see how much of an advantage a native program would have +over our WASM library.

Benchmark tools

So I wrote these to compare native and WASM performances:

Results

The tests were run on my development machine featuring an Intel Core i7-9750h.

Native

DifficultyRealUserSys
500000m0.040s0m0.040s0m0.000s
3000000m0.122s0m0.122s0m0.000s
5500000m0.124s0m0.119s0m0.003s
8000000m0.123s0m0.118s0m0.003s
10500000m0.933s0m0.932s0m0.000s
13000000m1.227s-0m0.007s
15500000m1.260s0m1.256s0m0.003s
18000000m1.243s0m1.242s0m0.000s
20500000m2.524s0m2.510s0m0.000s
23000000m2.545s0m2.543s0m0.000s
25500000m2.561s0m2.551s0m0.004s
28000000m2.555s0m2.540s0m0.006s
30500000m2.513s0m2.508s0m0.000s
33000000m2.484s0m2.481s0m0.000s
35500000m2.643s0m2.642s0m0.000s
38000000m2.663s0m2.661s0m0.000s
40500000m2.663s0m2.660s0m0.000s
43000000m2.689s0m2.683s0m0.004s
45500000m2.688s0m2.686s0m0.000s
48000000m2.517s0m2.509s0m0.003s

Browser

I ran the tests on both Firefox and Chromium to compare results

Firefox

  • User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
  • Hardware concurrency: 12
DifficultyDuration(in ms)
500000401
1000000413
1500000398
2000000394
25000001495
30000001556
35000003971
40000004235
45000004116

To be fair, my Firefox installation is loaded with a gazillion extensions while the Chromium instance is clean, as I don’t use it much

Chromium

  • User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
  • Hardware concurrency: 12
DifficultyDuration(in ms)
500000399.40000000037253
1000000354.6000000014901
1500000351.19999999925494
2000000353.80000000074506
25000001337.800000000745
30000001311.199999999255
35000003417.5999999996275
40000003488.800000000745
45000003458.2999999988824

Conclusion

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 -to run to completion in under 5 seconds is impressive.

So, in my opinion, native implementation is only slightly faster than +to run to completion in under 5 seconds is impressive!

So, in my opinion, native implementation is only slightly faster than the WASM library and for all intents and purposes, this shouldn’t matter -much.

Edit this page on GitHub

\ No newline at end of file +much.


P.S Work is underway to benchmark multiple platforms. A detailed report +will be published when that data is available.

For this post, I asked some of my friends to run the tests on their +computers. The results slightly varied but even the slowest case +generated proof for 4500000 difficulty(the highest in this test), in under +15 seconds!

Say hello to mCaptcha →

Edit this page on GitHub

\ No newline at end of file diff --git a/blog/sitemap.xml b/blog/sitemap.xml index a361fb3..f352ef8 100644 --- a/blog/sitemap.xml +++ b/blog/sitemap.xml @@ -1 +1 @@ -/blog/pow-performance/2021-09-01T13:24:31+05:30weekly0.5/blog/say-hello-to-mcaptcha/2021-05-27T18:12:01+05:30weekly0.5 \ No newline at end of file +/blog/pow-performance/2021-09-01T13:46:31+05:30weekly0.5/blog/say-hello-to-mcaptcha/2021-05-27T18:12:01+05:30weekly0.5 \ No newline at end of file diff --git a/contributors/aravinth-manivannan/index.html b/contributors/aravinth-manivannan/index.html index 31eaf3b..024132d 100644 --- a/contributors/aravinth-manivannan/index.html +++ b/contributors/aravinth-manivannan/index.html @@ -1,4 +1,4 @@ Aravinth Manivannan - mCaptcha

Aravinth Manivannan

Creator of mCaptcha.

@realaravinth

PoW performance

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?

Posted May 26, 2021 by Aravinth Manivannan ‐ 2 min read

Last Edited September 1, 2021

Say hello to mCaptcha

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?

Posted May 26, 2021 by Aravinth Manivannan ‐ 2 min read

Last Edited May 27, 2021

\ No newline at end of file +

Aravinth Manivannan

Creator of mCaptcha.

@realaravinth

PoW performance

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?

Posted May 26, 2021 by Aravinth Manivannan ‐ 3 min read

Last Edited September 1, 2021

Say hello to mCaptcha

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?

Posted May 26, 2021 by Aravinth Manivannan ‐ 2 min read

Last Edited May 27, 2021

\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index b78a1b8..0bc95f2 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -/blog/pow-performance/2021-09-01T13:24:31+05:30weekly0.5/blog/say-hello-to-mcaptcha/2021-05-27T18:12:01+05:30weekly0.5/docs/api/mcaptcha-system/2021-04-10T17:08:46+05:30weekly0.5/docs/self-hosted/getting-started/2021-07-21T15:49:53+05:30weekly0.5/docs/prologue/introduction/2021-07-21T15:49:53+05:30weekly0.5/docs/api/browser/2021-03-11T11:29:26+05:30weekly0.5/docs/self-hosted/docker/2021-07-21T15:49:53+05:30weekly0.5/docs/self-hosted/bare-metal/2021-07-21T15:49:53+05:30weekly0.5/docs/api/pow-sha256/2021-04-01T22:58:38+05:30weekly0.5/docs/self-hosted/dependencies/2021-07-21T15:49:53+05:30weekly0.5/docs/help/troubleshooting/2021-07-21T15:49:53+05:30weekly0.5/docs/help/faq/2021-07-21T15:49:53+05:30weekly0.5/about/2021-05-27T16:28:59+05:30weekly0.5/donate/2021-07-16T21:58:39+05:30weekly0.5/contributors/aravinth-manivannan/2021-05-26T14:18:41+05:30weekly0.5/contributors/2021-05-26T14:18:41+05:30weekly0.5/privacy-policy/2021-05-27T19:15:04+05:30weekly0.5/community/2021-05-27T18:12:01+05:30weekly0.5/security/2021-05-27T19:15:04+05:30weekly0.5/thanks/2021-05-27T20:25:33+05:30weekly0.5/2021-03-09T18:56:02+05:30weekly0.5/docs/help/2021-07-21T15:49:53+05:30weekly0.5/docs/prologue/2021-07-21T15:49:53+05:30weekly0.5/docs/api/2021-03-11T10:37:50+05:30weekly0.5/contact/2021-05-27T18:12:01+05:30weekly0.5/blog/2021-05-26T14:18:41+05:30weekly0.5/docs/2021-07-21T15:49:53+05:30weekly0.5/docs/self-hosted/2021-07-21T15:49:53+05:30weekly0.5 \ No newline at end of file +/blog/pow-performance/2021-09-01T13:46:31+05:30weekly0.5/blog/say-hello-to-mcaptcha/2021-05-27T18:12:01+05:30weekly0.5/docs/api/mcaptcha-system/2021-04-10T17:08:46+05:30weekly0.5/docs/self-hosted/getting-started/2021-07-21T15:49:53+05:30weekly0.5/docs/prologue/introduction/2021-07-21T15:49:53+05:30weekly0.5/docs/api/browser/2021-03-11T11:29:26+05:30weekly0.5/docs/self-hosted/docker/2021-07-21T15:49:53+05:30weekly0.5/docs/self-hosted/bare-metal/2021-07-21T15:49:53+05:30weekly0.5/docs/api/pow-sha256/2021-04-01T22:58:38+05:30weekly0.5/docs/self-hosted/dependencies/2021-07-21T15:49:53+05:30weekly0.5/docs/help/troubleshooting/2021-07-21T15:49:53+05:30weekly0.5/docs/help/faq/2021-07-21T15:49:53+05:30weekly0.5/about/2021-05-27T16:28:59+05:30weekly0.5/donate/2021-07-16T21:58:39+05:30weekly0.5/contributors/aravinth-manivannan/2021-05-26T14:18:41+05:30weekly0.5/contributors/2021-05-26T14:18:41+05:30weekly0.5/privacy-policy/2021-05-27T19:15:04+05:30weekly0.5/community/2021-05-27T18:12:01+05:30weekly0.5/security/2021-05-27T19:15:04+05:30weekly0.5/thanks/2021-05-27T20:25:33+05:30weekly0.5/2021-03-09T18:56:02+05:30weekly0.5/docs/help/2021-07-21T15:49:53+05:30weekly0.5/docs/prologue/2021-07-21T15:49:53+05:30weekly0.5/docs/api/2021-03-11T10:37:50+05:30weekly0.5/contact/2021-05-27T18:12:01+05:30weekly0.5/blog/2021-05-26T14:18:41+05:30weekly0.5/docs/2021-07-21T15:49:53+05:30weekly0.5/docs/self-hosted/2021-07-21T15:49:53+05:30weekly0.5 \ No newline at end of file