<p><small>Posted October 19, 2023 by <aclass="stretched-link position-relative"href="/contributors/aravinth-manivannan/">Aravinth Manivannan</a> ‐ <strong>2 min read</strong></small><p>
<p><small>Last Edited October 21, 2023</small><p>
</div>
<pclass="lead"></p>
<p>mCaptcha uses a Proof-of-Work (PoW) based algorithm to offer
Denial-of-Service protection, because of <ahref="https://www.w3.org/TR/turingtest/#proof-of-work">its excellent accessibility
characteristics</a>. PoW
within mCaptcha is configuration — webmasters can configure
<ahref="/docs/terminology/difficulty-factor">difficulty factors</a> for their
installations, which determines waiting time for visitors. But PoW can
become inaccessible if webmasters choose a very high difficulty factor.
So they have to maintain a balance which imposes sufficient load on DDoS
attackers while also being accessible to common folk.</p>
<divclass="w-100"> mCaptcha installation: integration of the mCaptcha widget to a service.</div>
</div>
<p>To help webmasters correctly configure difficult factors, we are
building a feedback loop which would gather performance statistics from
voluntary mCaptcha installations and make them available to other
mCaptcha installations. The performance statistics can be used by all
mCaptcha instances to automatically optimize an installation. We are
calling this the mCaptcha net.</p>
<h2id="participation-is-optional">Participation is optional</h2>
<p>Participation in the mCaptcha net is disabled by default and is
optional as it has privacy implications: it will reveal the
existence of an mCaptcha instance.</p>
<p>The admins of mCaptcha instances can choose to upload truly anonymous
PoW performance statistics to a number of <ahref="https://git.batsense.net/mCaptcha/survey">mCaptcha/survey</a> instances.
The data uploaded is public and so is accessible to all mCaptcha
instances.</p>
<p>We also offer opt-in controls at installation level:</p>
<figure>
<imgclass="img-fluid lazyload blur-up"data-sizes="auto"src="/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_20x0_resize_box_3.png"data-srcset="/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_900x0_resize_box_3.png 900w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_800x0_resize_box_3.png 800w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_700x0_resize_box_3.png 700w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_600x0_resize_box_3.png 600w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_500x0_resize_box_3.png 500w"width="759"height="745"alt="A screenshot of the 'add sitekey' form on the mCaptcha dashboard with a checkbox for anonymously publishing performance statistics. It is not checked by default.">
<noscript><imgclass="img-fluid"sizes="100vw"srcset="/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_900x0_resize_box_3.png 900w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_800x0_resize_box_3.png 800w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_700x0_resize_box_3.png 700w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_600x0_resize_box_3.png 600w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_500x0_resize_box_3.png 500w"src="/blog/introducing-mcaptcha-net/installation-level-opt-in.png"width="759"height="745"alt="A screenshot of the 'add sitekey' form on the mCaptcha dashboard with a checkbox for anonymously publishing performance statistics. It is not checked by default."></noscript>
<figcaptionclass="figure-caption">Add sitekey form on the mCaptcha dashboard with a checkbox for anonymously publishing performance statistics. It is not checked by default.</figcaption>
</span></span></code></pre></div><p>This doesn’t include the usual fingerprinting parameters like
User-Agent, cookies, and IP address. Additionally, we use pseudo IDs
at both mCaptcha/mCaptcha and mCaptcha/survey to avoid exposing installations.</p>
<figure>
<imgclass="img-fluid lazyload blur-up"data-sizes="auto"src="/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_20x0_resize_box_3.png"data-srcset="/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_900x0_resize_box_3.png 900w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_800x0_resize_box_3.png 800w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_700x0_resize_box_3.png 700w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_600x0_resize_box_3.png 600w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_500x0_resize_box_3.png 500w"width="1842"height="1008"alt="A screenshot of a tmux window with logs of mCaptcha/mCaptcha and mCapctha/survey showing both of them talking to eachother">
<noscript><imgclass="img-fluid"sizes="100vw"srcset="/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_900x0_resize_box_3.png 900w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_800x0_resize_box_3.png 800w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_700x0_resize_box_3.png 700w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_600x0_resize_box_3.png 600w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_500x0_resize_box_3.png 500w"src="/blog/introducing-mcaptcha-net/working-rpc.png"width="1842"height="1008"alt="A screenshot of a tmux window with logs of mCaptcha/mCaptcha and mCapctha/survey showing both of them talking to eachother"></noscript>
<figcaptionclass="figure-caption">mCaptcha/mCaptcha uploading performance statistics to a mCaptcha/survey instance</figcaption>
</figure>
<h2id="status">Status</h2>
<p>We now have performance statistics uploads to mCaptcha/survey instances