{"id":10261,"date":"2025-03-26T14:57:37","date_gmt":"2025-03-26T13:57:37","guid":{"rendered":"https:\/\/wsj-crypto.com\/?p=10261"},"modified":"2025-03-26T14:57:37","modified_gmt":"2025-03-26T13:57:37","slug":"unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation","status":"publish","type":"post","link":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/","title":{"rendered":"Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation"},"content":{"rendered":"<p><\/p>\n<div id=\"\">\n<p class=\"chakra-text css-gi02ar\">The cryptocurrency 2.0 sector has made significant advancements over the past year in enhancing blockchain technology, including the establishment and, in certain instances, the actual implementation of proof of stake models such as <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/01\/15\/slasher-a-punitive-proof-of-stake-algorithm\">Slasher<!-- --><\/a> and <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/wiki.bitshares.org\/index.php\/DPOS_or_Delegated_Proof_of_Stake\">DPOS<!-- --><\/a>, various <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/www.reddit.com\/r\/ethereum\/comments\/2jvv5d\/ethereum_blog_scalability_part_2_hypercubes\/\">types<!-- --><\/a> of <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/petertodd\/tree-chains-paper\/blob\/master\/tree-chains.tex\">scalable<!-- --><\/a> blockchain <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/11\/13\/scalability-part-3-metacoin-history-multichain\">mechanisms<!-- --><\/a>, blockchains utilizing &#8220;leaderless consensus&#8221; strategies derived from <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/pebble.io\/docs\/\">traditional Byzantine fault tolerance principles<!-- --><\/a>, along with economic components like <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/03\/28\/schellingcoin-a-minimal-trust-universal-data-feed\">Schelling<!-- --><\/a> consensus <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/psztorc\/Truthcoin\/blob\/master\/docs\/Truthcoin_Whitepaper.pdf?raw=true\">frameworks<!-- --><\/a> and <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/rmsams\/stablecoins\">stable<!-- --><\/a> <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/11\/11\/search-stable-cryptocurrency\">currencies<!-- --><\/a>. Each of these technologies addresses critical shortcomings of the blockchain model in comparison to centralized servers: scalability minimizes size limitations and transaction expenses, leaderless consensus mitigates various types of vulnerabilities, enhanced PoS consensus frameworks lower consensus expenses and bolster security, and Schelling consensus enables blockchains to be &#8220;cognizant&#8221; of real-world information. Nevertheless, there remains one aspect of the equation that all methodologies thus far have not yet resolved: privacy.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"currency-dapps-and-privacy\">Currency, Dapps and Privacy<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Bitcoin offers its users a rather distinctive array of trade-offs concerning financial confidentiality. While Bitcoin performs significantly better than any previous system at safeguarding the <!-- --><em class=\"chakra-text css-0\">actual identities<!-- --><\/em> associated with each of its accounts &#8211; superior to fiat and banking systems due to the absence of identity registration, and better than cash as it can be used in conjunction with Tor to fully obscure physical location, the existence of the Bitcoin blockchain implies that the genuine <!-- --><em class=\"chakra-text css-0\">transactions<!-- --><\/em> executed by the accounts are more visible than ever &#8211; neither the US government, nor China, nor the thirteen-year-old hacker down the block require even a warrant to ascertain precisely which account transferred how much BTC to which recipient at what specific moment. In general, these two opposing forces pull Bitcoin in conflicting directions, and it is not entirely apparent which one predominates. <!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In regard to Ethereum, the scenario is theoretically similar, but in practice, it differs considerably. Bitcoin is a blockchain designed for currency, and currency is, by its nature, a highly fungible entity. There are methods like <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/medium.com\/@octskyward\/merge-avoidance-7f95a386692f\">merge avoidance<!-- --><\/a> that enable users to effectively masquerade as 100 distinct accounts, with their wallet managing the separation behind the scenes. <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/bitcointalk.org\/index.php?topic=279249.0\">Coinjoin<!-- --><\/a> can be implemented to &#8220;shuffle&#8221; assets in a decentralized manner, and centralized mixers are also a viable option, particularly when combining several of them. Ethereum, on the contrary, is meant to store the interim state of <!-- --><em class=\"chakra-text css-0\">any<!-- --><\/em> type of processes or relationships, and regrettably, it is often the case that many processes or connections that are significantly more intricate than money are intrinsically &#8220;account-based&#8221;, which results in considerable costs when attempting to obscure one&#8217;s actions through multiple accounts. Therefore, Ethereum, in its current form, often embodies the transparency aspect of blockchain technology far more than the privacy aspect (although those keen on using Ethereum for currency can certainly construct higher-privacy cash protocols within subcurrencies).<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Now, the inquiry arises, what happens when individuals genuinely desire privacy, yet a Diaspora-style self-hosting solution or a Zerocash-style zero-knowledge-proof approach is, for any reason, unfeasible &#8211; for instance, if we wish to carry out computations that necessitate aggregating multiple users&#8217; private data? Even if we resolve scalability and blockchain data assets, will the absence of privacy inherently linked to blockchains mean that we simply have to revert to relying on centralized servers? Or can we devise a protocol that merges the advantages of both realms: a blockchain-like system that provides decentralized authority not only over the permission to modify the state but also over the entitlement to access the information entirely?<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Interestingly, such a system exists within the realm of possibility, and was even postulated by Nick Szabo <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/godcoin.org\/\">in 1998<!-- --><\/a> under the label of &#8220;God protocols&#8221; (although, as Nick Szabo has noted, we should avoid using that term for the protocols we are about to outline here since God is generally considered or even <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/rationalwiki.org\/wiki\/Ontological_argument\">defined<!-- --><\/a> to be Pareto-superior to <!-- --><i>everything<!-- --><\/i> else and as we will soon demonstrate, these protocols are quite distant from that); but now with the emergence of Bitcoin-style cryptoeconomic technology, the creation of such a protocol may, for the first time, genuinely be practical. What is this protocol? To assign it a reasonably technically precise yet still comprehensible name, we will refer to it as a &#8220;secret sharing DAO&#8221;.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"fundamentals-secret-sharing\">Fundamentals: Secret Sharing<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\"><small><i>To bypass the entertaining technical nuances and head directly to applications, <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"http:\/\/blog.ethereum.org\/2014\/12\/26\/secret-sharing-daos-crypto-2-0#applications\">click here<!-- --><\/a><\/i><\/small><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Secret computation networks depend on two core components to store data in a decentralized manner. The first is <!-- --><strong><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/en.wikipedia.org\/wiki\/Secret_sharing\">secret sharing<!-- --><\/a><\/strong>. Secret sharing fundamentally enables data to be kept in a decentralized manner across N participants in such a way that any K participants can collaborate to reconstruct the information, but K-1 participants are unable to retrieveany details whatsoever. N and K may be adjusted to any preferred values; it merely requires a few minor parameter adjustments in the algorithm.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The most straightforward way to mathematically represent secret sharing is as follows. We understand that two points define a line:<!-- --><\/p>\n<p><!-- --><center><br \/>\n<!-- --><br \/>\n<!-- --><\/center><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Thus, to execute 2-of-N secret sharing, we take our secret <!-- --><span class=\"chakra-text css-ons8vw\">S<\/span>, produce a random slope <!-- --><span class=\"chakra-text css-ons8vw\">m<\/span>, and formulate the line <!-- --><span class=\"chakra-text css-ons8vw\">y = mx + S<\/span>. We then provide the <!-- --><span class=\"chakra-text css-ons8vw\">N<\/span> participants with the points on the line <!-- --><span class=\"chakra-text css-ons8vw\">(1, m + S)<\/span>, <!-- --><span class=\"chakra-text css-ons8vw\">(2, 2m + S)<\/span>, <!-- --><span class=\"chakra-text css-ons8vw\">(3, 3m + S)<\/span>, etc. Any two of them can reconstruct the line and retrieve the original secret, while a single individual can accomplish nothing; if you obtain the point <!-- --><span class=\"chakra-text css-ons8vw\">(4, 12)<\/span>, that could belong to the line <!-- --><span class=\"chakra-text css-ons8vw\">y = 2x + 4<\/span>, or <!-- --><span class=\"chakra-text css-ons8vw\">y = -10x + 52<\/span>, or <!-- --><span class=\"chakra-text css-ons8vw\">y = 305445x &#8211; 1221768<\/span>. To implement 3-of-N secret sharing, we simply create a parabola instead, and provide individuals points on the parabola:<!-- --><\/p>\n<p><!-- --><center><img decoding=\"async\" alt=\"\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/08\/threepoints.png\" class=\"chakra-image css-hw6q2r\"\/><\/center><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Parabolas possess the characteristic that any three points on a parabola can be utilized to reconstruct the parabola (and no one or two points are adequate), so fundamentally the same method is applicable. And, more broadly, to implement K-of-N secret sharing, we employ a polynomial of degree K-1 in a similar manner. There exists a <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/en.wikipedia.org\/wiki\/Polynomial_interpolation\">collection of algorithms<!-- --><\/a> for retrieving the polynomial from a sufficient set of points in all such scenarios; they are elaborated on in our <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/08\/16\/secret-sharing-erasure-coding-guide-aspiring-dropbox-decentralizer\">previous article on erasure coding<!-- --><\/a>.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">This is how the secret sharing DAO will manage data. Rather than having each participating node in the consensus hold a copy of the entire system state, each participating node in the consensus will maintain a set of <!-- --><em class=\"chakra-text css-0\">shares<!-- --><\/em> of the state &#8211; points on polynomials, one point on a different polynomial for each variable that constitutes part of the state.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"fundamentals-computation\">Fundamentals: Computation<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Now, how does the secret sharing DAO conduct computation? For this, we utilize a series of algorithms called <!-- --><strong><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/en.wikipedia.org\/wiki\/Secure_multi-party_computation\">secure multiparty computation<!-- --><\/a><\/strong> (SMPC). The core principle behind SMPC is that there are methods to take data which is distributed among N parties using secret sharing, execute computations on it in a decentralized manner, and ultimately arrive at the result secret-shared among the parties, all without ever reconstructing any of the data on a single device.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">SMPC with addition is straightforward. To illustrate how, let&#8217;s revisit the two-points-make-a-line example, but now let&#8217;s consider two lines:<!-- --><\/p>\n<p><!-- --><center><br \/>\n<!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/12\/twolines.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/center><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Assume that the <!-- --><span class=\"chakra-text css-ons8vw\">x=1<\/span> point of both lines <!-- --><span class=\"chakra-text css-ons8vw\">A<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">B<\/span> is stored by device <!-- --><span class=\"chakra-text css-ons8vw\">P[1]<\/span>, the <!-- --><span class=\"chakra-text css-ons8vw\">x=2<\/span> point is saved by device <!-- --><span class=\"chakra-text css-ons8vw\">P[2]<\/span>, and so forth. Now, suppose that <!-- --><span class=\"chakra-text css-ons8vw\">P[1]<\/span> calculates a new value, <!-- --><span class=\"chakra-text css-ons8vw\">C(1) = A(1) + B(1)<\/span>, and B computes <!-- --><span class=\"chakra-text css-ons8vw\">C(2) = A(2) + B(2)<\/span>. Now, let&#8217;s sketch a line through those two points:<!-- --><\/p>\n<p><!-- --><center><br \/>\n<!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/12\/twolinesum.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/center><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Thus, we obtain a new line, <!-- --><span class=\"chakra-text css-ons8vw\">C<\/span>, such that <!-- --><span class=\"chakra-text css-ons8vw\">C = A + B<\/span> at points <!-- --><span class=\"chakra-text css-ons8vw\">x=1<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">x=2<\/span>. However, the intriguing aspect is that this new line is, in fact, equal to <!-- --><span class=\"chakra-text css-ons8vw\">A + B<\/span> at <!-- --><em class=\"chakra-text css-0\">every<!-- --><\/em> point:<!-- --><\/p>\n<p><!-- --><center><br \/>\n<!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/12\/twolinesum2.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/center><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Therefore, we establish a rule: sums of secret shares (at the identical x coordinate) are secret shares of the overall sum. Utilizing this principle (which also extends to higher dimensions), we can transform secret shares of <!-- --><span class=\"chakra-text css-ons8vw\">a<\/span> and secret shares of <!-- --><span class=\"chakra-text css-ons8vw\">b<\/span> into secret shares of <!-- --><span class=\"chakra-text css-ons8vw\">a+b<\/span>, all <!-- --><em class=\"chakra-text css-0\">without ever reconstructing <!-- --><span class=\"chakra-text css-ons8vw\">a<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">b<\/span> themselves<!-- --><\/em>. Multiplication by a known constant value operates in the same manner: <!-- --><span class=\"chakra-text css-ons8vw\">k<\/span> times the ith secret share of <!-- --><span class=\"chakra-text css-ons8vw\">a<\/span> is equivalent to the ith secret share of <!-- --><span class=\"chakra-text css-ons8vw\">a*k<\/span>.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Multiplication of two secret shared quantities, regrettably, is <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/www.eecs.harvard.edu\/~cat\/cs\/tlc\/papers\/grr.pdf\">far more complex<!-- --><\/a>. The process will entail several steps to elucidate, and since it is fairly intricate in any case, it is advisable to conduct this for arbitrary polynomials right away. Here\u2019s the intriguing part. First, let\u2019s assume there are values <!-- --><span class=\"chakra-text css-ons8vw\">a<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">b<\/span>, secret shared among parties <!-- --><span class=\"chakra-text css-ons8vw\">P[1]<\/span> &#8230; <!-- --><span class=\"chakra-text css-ons8vw\">P[n]<\/span>, where <!-- --><span class=\"chakra-text css-ons8vw\">a[i]<\/span> signifies the ith share of <!-- --><span class=\"chakra-text css-ons8vw\">a<\/span> (and similarly for <!-- --><span class=\"chakra-text css-ons8vw\">b[i]<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">b<\/span>). We commence like this:<!-- --><\/p>\n<p><!-- --><center><br \/>\n<!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/12\/secretmultiply.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/center><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Now, one approach that you might consider is, if we can simply create a new polynomial <!-- --><span class=\"chakra-text css-ons8vw\">c = a + b<\/span> by ensuring every participant tracks <!-- --><span class=\"chakra-text css-ons8vw\">c[i] = a[i] + b[i]<\/span>, is it possible to apply the same principle to multiplication? The response is, surprisingly, affirmative, yet it comes with a substantial issue: the resultant polynomial has a degree that is double that of the initial ones. For instance, if the initial polynomials were <!-- --><span class=\"chakra-text css-ons8vw\">y = x + 5<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">y = 2x &#8211; 3<\/span>, their multiplication would yield <!-- --><span class=\"chakra-text css-ons8vw\">y = 2x^2 + 7x &#8211; 15<\/span>. Therefore, if we perform multiplication repeatedly, the polynomial would grow too large for the N group to manage.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">To mitigate this issue, we execute a type of rebasing protocol where we transform the shares of the larger polynomial into shares of a polynomial with the original degree. The functioning is as follows. Initially, party <!-- --><span class=\"chakra-text css-ons8vw\">P[i]<\/span> produces a new random polynomial, matching the degree of <!-- --><span class=\"chakra-text css-ons8vw\">a<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">b<\/span>, which evaluates to <!-- --><span class=\"chakra-text css-ons8vw\">c[i] = a[i]*b[i]<\/span> at zero and subsequently distributes points along that polynomial (i.e., shares of <!-- --><span class=\"chakra-text css-ons8vw\">c[i]<\/span>) to all participants.<!-- --><\/p>\n<p><!-- --><center><br \/>\n<!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/12\/secretmultiply2.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/center><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Consequently, <!-- --><span class=\"chakra-text css-ons8vw\">P[j]<\/span> now possesses <!-- --><span class=\"chakra-text css-ons8vw\">c[i][j]<\/span> for every <!-- --><span class=\"chakra-text css-ons8vw\">i<\/span>. Given this information, <!-- --><span class=\"chakra-text css-ons8vw\">P[j]<\/span> computes <!-- --><span class=\"chakra-text css-ons8vw\">c[j]<\/span>, ensuring that everyone holds secret shares of <!-- --><span class=\"chakra-text css-ons8vw\">c<\/span>, based on a polynomial that maintains the same degree as <!-- --><span class=\"chakra-text css-ons8vw\">a<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">b<\/span>.<!-- --><\/p>\n<p><!-- --><center><br \/>\n<!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/12\/secretmulitply3.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/center><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">To accomplish this, we utilized a clever technique of secret sharing: since the mathematics of secret sharing itself involves nothing but additions and multiplications with known constants, the two layers of secret sharing are commutative: if we first implement secret sharing layer A and then layer B, we can remove layer A prior to layer B and still maintain protection. This enables us to transition from a higher-degree polynomial to a lower-degree polynomial while concealing the intermediate values &#8211; instead, the intermediate phase involved both layers being applied <!-- --><em class=\"chakra-text css-0\">simultaneously<!-- --><\/em>. <!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">With operations of addition and multiplication over 0 and 1, we possess the capacity to execute arbitrary circuits within the SMPC framework. We can define:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">AND(a, b) = a * b<\/span><\/li>\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">OR(a, b) = a + b &#8211; a * b<\/span><\/li>\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">XOR(a, b) = a + b &#8211; 2 * a * b<\/span><\/li>\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">NOT(a) = 1 &#8211; a<\/span><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Thus, we can conduct any programs desired, although with one significant limitation: secret conditional branching is not feasible. In other words, if we had a computation <!-- --><span class=\"chakra-text css-ons8vw\">if (x == 5) <do a=\"\"> else <do b=\"\"\/><\/do><\/span>, then the nodes would need to determine whether they are executing branch A or branch B, which would necessitate revealing <!-- --><span class=\"chakra-text css-ons8vw\">x<\/span> during the process.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">There are two solutions to this concern. Firstly, we can utilize multiplication as a &#8220;poor man&#8217;s if&#8221; &#8211; substitute an expression like <!-- --><span class=\"chakra-text css-ons8vw\">if (x == 5) <y\/><\/span> with <!-- --><span class=\"chakra-text css-ons8vw\">y = (x == 5) * 7 + (x != 5) * y<\/span>, employing either circuits or strategic protocols that verify equality through repeated multiplication (for instance, if we are in a <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/08\/16\/secret-sharing-erasure-coding-guide-aspiring-dropbox-decentralizer\">finite field<!-- --><\/a>, we can determine if <!-- --><span class=\"chakra-text css-ons8vw\">a == b<\/span> by applying <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/en.wikipedia.org\/wiki\/Fermat's_little_theorem\">Fermat&#8217;s little theorem<!-- --><\/a> to <!-- --><span class=\"chakra-text css-ons8vw\">a-b<\/span>). Secondly, as we will explore, if we embed if statements within the EVM and execute the EVM inside SMPC, we can resolve the issue, only disclosing information about how many steps the EVM took before computation ended (and if we are particularly concerned, we can minimize the information leakage further, for example, by rounding the number of steps to the nearest power of two, albeit at some efficiency cost).<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The secret-sharing based protocol outlined above represents merely one approach to accomplishing relatively straightforward SMPC; alternative methods exist, and ensuring security also necessitates the addition of a <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/en.wikipedia.org\/wiki\/Verifiable_secret_sharing\">verifiable secret sharing<!-- --><\/a> layer above, but that lies beyond the scope of this article &#8211; the preceding explanation aims simply to illustrate how a minimal implementation is feasible.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"building-a-currency\">Creating a Currency<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Now that we possess a basic understanding of how SMPC operates, how might we apply it to construct a decentralized currency engine? The conventional description of a blockchain in this blog is as a system that sustains a state, <!-- --><span class=\"chakra-text css-ons8vw\">S<\/span>, accepts transactions, reaches consensus on which transactions should be executed at a certain time, and computes a state transition function <!-- --><span class=\"chakra-text css-ons8vw\">APPLY(S, TX) -&gt; S&#8217; OR INVALID<\/span>. In this context, we will assert that <!-- --><em class=\"chakra-text css-0\">all<!-- --><\/em> transactions are deemed valid, and if a transaction <!-- --><span class=\"chakra-text css-ons8vw\">TX<\/span> is invalid, then we simply conclude that <!-- --><span class=\"chakra-text css-ons8vw\">APPLY(S, TX) = S<\/span>.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Given that the blockchain lacks transparency, we might anticipate the requirement for two different categories of transactions that users can submit into the SMPC: <!-- --><strong>get requests<!-- --><\/strong>, inquiring about specific details regarding an account in the present state, and <!-- --><strong>update requests<!-- --><\/strong>, comprising transactions to enact on the state. We will establish the rule that each account can solely request balance and nonce details pertaining to itself, and can only withdraw from its own balance. We characterize the two types of requests as follows:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span>SEND: <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>from_pubkey, from_id, to, value, nonce, sig<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>GET: <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>from_pubkey, from_id, sig<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The information is preserved across the N nodes in the subsequent structure:<!-- --><\/p>\n<p><!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/12\/accounts.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In essence, the information is organized as a collection of 3-tuples that symbolize accounts, with each 3-tuple encapsulating the owning pubkey, nonce, and balance. To initiate a request, a node formulates the transaction, partitions it into secret shares, creates a random request ID, and appends both the ID and a minor amount of proof of work to each share. The proof of work is essential due to the requirement for some anti-spam strategies, and since account balances are confidential, there&#8217;s no means to ascertain if the sending account possesses sufficient funds to cover a transaction fee. The nodes then autonomously validate the shares of the signature against the portion of the public key provided in the transaction (there exist signature methodologies permitting this sort of share-by-share validation; <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/en.wikipedia.org\/wiki\/Schnorr_signature\">Schnorr signatures<!-- --><\/a> represent one significant category). If any specific node encounters an invalid share (due to proof of work or signature issues), it discards it; otherwise, it accepts it.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Accepted transactions are not executed instantaneously, akin to a blockchain framework; initially, they are stored within a memory pool. Every 12 seconds, we employ a consensus algorithm &#8211; it might be a straightforward approach, such as a random node from the N acting as a dictator, or a sophisticated neo-BFT algorithm similar to that utilized by <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/pebble.io\/\">Pebble<!-- --><\/a> &#8211; to reach a consensus on which set of request IDs should be processed and in what sequence (for ease, basic alphabetical ordering will likely be adequate).<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">At this point, to fulfill a GET request, the SMPC will perform computations and reconstruct the result of the following operation:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span>owner_pubkey <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>from_id <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span> + R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">3<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>from_id <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span> + <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">..<!-- --><\/span><span>. + R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">3<!-- --><\/span><span>*n<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>from_id <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> n<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>valid <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>owner_pubkey <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> from_pubkey<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>output <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> valid * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">2<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>from_id <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span> + R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">5<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>from_id <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span> + <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">..<!-- --><\/span><span>. + R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>3n + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">2<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>from_id <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> n<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">))<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">What is the purpose of this equation? It is structured in three phases. Initially, we obtain the owner pubkey of the account for which the request seeks to ascertain the balance. Since the calculation occurs within an SMPC, and therefore no node is aware of the specific database index to access, we achieve this by simply collecting all database indices, multiplying the unrelated ones by zero and then computing the total. Following this, we verify if the request is attempting to acquire information from an account that it indeed possesses (recall that we verified the legitimacy of <!-- --><span class=\"chakra-text css-ons8vw\">from_pubkey<\/span> against the signature in the initial phase, thus here we merely require to confirm the account ID against the <!-- --><span class=\"chakra-text css-ons8vw\">from_pubkey<\/span>). Ultimately, we apply the same database retrieval primitive to obtain the balance, and multiply the balance by the validity to derive the outcome (i.e., invalid requests yield a balance of 0, while valid ones reflect the actual balance).<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Now, let&#8217;s examine the process of a SEND operation. First, we calculate the validity condition, which entails verifying that (1) the public key of the targeted account is accurate, (2) the nonce is appropriate, and (3) the account possesses sufficient funds for the transaction. It is important to note that to accomplish this we again employ the &#8220;multiply by an equality check and add&#8221; protocol, but for simplicity, we will shorten <!-- --><span class=\"chakra-text css-ons8vw\">R[0] * (x == 0) + R[3] * (x == 1) + &#8230;<\/span> to <!-- --><span class=\"chakra-text css-ons8vw\">R[x * 3]<\/span>.<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span>valid <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>from_id * <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">3<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> from_pubkey<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>from_id * <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">3<!-- --><\/span><span> + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> nonce<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>from_id * <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">3<!-- --><\/span><span> + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">2<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">&gt;=<!-- --><\/span><span> value<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Next, we proceed with:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span>R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>from_id * <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">3<!-- --><\/span><span> + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">2<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> -<!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> value * valid\n<!-- --><\/span><span>R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>from_id * <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">3<!-- --><\/span><span> + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">+=<!-- --><\/span><span> valid\n<!-- --><\/span><span>R<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>to * <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">3<!-- --><\/span><span> + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">2<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">+=<!-- --><\/span><span> value * valid\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">As for database updates, <!-- --><span class=\"chakra-text css-ons8vw\">R[x * 3] += y<\/span> translates to the subsequent set of commands <!-- --><span class=\"chakra-text css-ons8vw\">R[0] += y * (x == 0), R[3] += y * (x == 1) &#8230;<\/span>. It should be noted that all of these can be executed in parallel. Furthermore, keep in mind that for the implementation of balance verification we utilized the <!-- --><span class=\"chakra-text css-ons8vw\">&gt;=<\/span> operator. This, once again, is trivial through the use of boolean logic gates; however, even when applying a finite field for optimization, there do exist <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/www.iacr.org\/archive\/pkc2007\/44500343\/44500343.pdf\">some ingenious methods<!-- --><\/a> for executing the verification using solely additions and multiplications.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In all of the preceding points, we identified two primary constraints regarding efficiency within the SMPC framework. Initially, accessing and modifying a database incurs an O(n) expense since you essentially have to examine and alter every cell. Doing less would entail revealing to individual nodes which segment of the database a read or write originated from, potentially causing statistical memory leaks. Secondly, each multiplication necessitates a network communication, leading to the realization that the critical limitation here is not computation or memory, but latency. Hence, it becomes evident that secret sharing networks are regrettably not ideal protocols; while they can efficiently manage business logic, they will never handle anything more intricate &#8211; even cryptographic verifications, apart from a select few specifically designed for the platform, are often too costly.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"from-currency-to-evm\">Transitioning from Currency to EVM<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Now, the subsequent challenge is determining how to transition from this basic toy currency to a standard EVM processor. Let\u2019s delve into the code for the virtual machine operating within a solitary transaction framework. A more straightforward version of the function appears roughly as follows:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span>def run_evm<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>block, tx, msg, code<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>    pc <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>    gas <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> msg.gas\n<!-- --><\/span><span>    stack <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>    stack_size <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>    <!-- --><\/span><span class=\"token\" style=\"color:rgb(255, 203, 139)\">exit<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>    <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">while<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>:\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(130, 170, 255)\">op<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> code<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>pc<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>        gas -<!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">if<!-- --><\/span><span> gas <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\"\/><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span> or stack_size <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\"\/><span> get_stack_req<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>op<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>            <!-- --><\/span><span class=\"token\" style=\"color:rgb(255, 203, 139)\">exit<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">if<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(130, 170, 255)\">op<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> ADD:\n<!-- --><\/span><span>            x <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>            y <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>            stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> x + y\n<!-- --><\/span><span>            stack_size -<!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">if<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(130, 170, 255)\">op<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> SUB:\n<!-- --><\/span><span>            x <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>            y <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size -```html\n<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>            pile<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>pile_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> x - y\n<!-- --><\/span><span>            pile_size -<!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">..<!-- --><\/span><span>.\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">if<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(130, 170, 255)\">op<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">==<!-- --><\/span><span> JUMP:\n<!-- --><\/span><span>            pc <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> pile<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>pile_size<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>            pile_size -<!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">..<!-- --><\/span><span>.\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The parameters involved are:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">The script<!-- --><\/li>\n<li class=\"css-cvpopp\">The pile<!-- --><\/li>\n<li class=\"css-cvpopp\">The memory<!-- --><\/li>\n<li class=\"css-cvpopp\">The account status<!-- --><\/li>\n<li class=\"css-cvpopp\">The program pointer<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Therefore, we can merely save these as records, and for each computational step execute a function akin to the following:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span class=\"token\" style=\"color:rgb(130, 170, 255)\">op<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> script<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>pc<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> * alive + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">256<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span> - alive<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><span>gas -<!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>pile_p1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>pile_p0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>pile_n1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> pile<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>pile_size<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> + pile<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>pile_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>pile_sz<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> pile_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span>new_pc<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> pc + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>pile_p1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>pile_p0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>pile_n1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span>\n``````html\n<span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> - stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>stack_sz<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span>new_pc<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> pc + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(199, 146, 234)\">..<!-- --><\/span><span>.\n<!-- --><\/span><span>stack_p1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">86<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>stack_p0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">86<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>stack_n1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">86<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>stack_sz<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">86<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span>\n<!-- --><\/span><span>new_pc<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">86<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(199, 146, 234)\">..<!-- --><\/span><span>.\n<!-- --><\/span><span>stack_p1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">256<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>stack_p0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">256<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>stack_n1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">256<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>stack_sz<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">256<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span><span>new_pc<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">256<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>pc <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> new_pc<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>op<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size + <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack_p1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>op<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack_p0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>op<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>stack<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>stack_size - <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span>\n``````html\n<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack_n1<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>op<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>stack_size <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> stack_sz<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>op<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>pc <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> new_pc<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">[<!-- --><\/span><span>op<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">]<!-- --><\/span><span>\n<!-- --><\/span><span>alive *<!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">=<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>gas <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\"\/><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span> * <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>stack_size <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\"\/><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Fundamentally, we determine the outcome of every single opcode concurrently, and subsequently select the appropriate one to alter the state. The <!-- --><span class=\"chakra-text css-ons8vw\">alive<\/span> parameter initializes at 1, and if at any stage the alive parameter turns to zero, all actions from that moment effectively cease to operate. This appears to be extraordinarily inefficient, which it is, yet keep in mind: the constraint is not processing time but delay. All of the preceding can be parallelized. Indeed, the observant reader might realize that the overall operation of executing every opcode concurrently possesses only O(n) complexity in terms of the number of opcodes (especially if earlier we capture the top several elements of the stack into designated variables for both input and output, which for simplicity we have not done), thus it isn&#8217;t even the most computationally demanding segment (if the number of accounts or storage slots surpasses that of opcodes, which seems plausible, database updates are). At the conclusion of every N cycles (or for reduced information leakage every power of two of cycles), we reconstruct the <!-- --><span class=\"chakra-text css-ons8vw\">alive<\/span> parameter, and upon observing that <!-- --><span class=\"chakra-text css-ons8vw\">alive = 0<\/span>, we terminate.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In an EVM with numerous stakeholders, the database is likely to be the most substantial burden. To alleviate this challenge, there are potentially clever trade-offs regarding information leakage that can be implemented. For instance, we already acknowledge that most often code is retrieved from sequential database indices. Thus, one potential method could involve storing the code as a series of large integers, each large integer encapsulating several opcodes, and then employing <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/www.iacr.org\/archive\/pkc2007\/44500343\/44500343.pdf\">bit decomposition protocols<!-- --><\/a> to extract individual opcodes from a number upon loading it. There are probably many methods to enhance the virtual machine&#8217;s fundamental efficiency; the prior discussion is intended, once again, as proof of concept to demonstrate that a secret sharing DAO is inherently achievable, not anything resembling an optimal execution. Moreover, we can explore architectures akin to those utilized in <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/10\/21\/scalability-part-2-hypercubes\">scalability 2.0 strategies<!-- --><\/a> to significantly compartmentalize the state to further elevate efficiency.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"updating-the-n\">Modifying the N<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The SMPC framework described previously presumes the presence of existing N parties and aspires to remain secure against any minority of them (or in certain configurations at least any minority less than 1\/4 or 1\/3) colluding. Nonetheless, blockchain protocols must theoretically endure indefinitely, thus stagnant economic groups cannot be sustained; instead, we must select the consensus participants through a mechanism like proof of stake. A potential protocol might function as follows:<!-- --><\/p>\n<p><!-- --><\/p>\n<ol role=\"list\" class=\"css-13a5a39\">\n<li class=\"css-cvpopp\">The secret sharing DAO&#8217;s time is segmented into &#8220;epochs&#8221;, each potentially spanning between an hour and a week.<!-- --><\/li>\n<li class=\"css-cvpopp\">In the initial epoch, the participants are designated as the top N stakeholders from the genesis sale.<!-- --><\/li>\n<li class=\"css-cvpopp\">At the conclusion of an epoch, anyone can register to be among the participants in the subsequent round by placing down a deposit. N participants are randomly selected, and disclosed.<!-- --><\/li>\n<li class=\"css-cvpopp\">A &#8220;decentralized handoff protocol&#8221; is executed, where the N participants concurrently distribute their shares among the incoming N, and each of the new N reconstitutes their share from the segments they received &#8211; effectively, the same protocol utilized for multiplication. It is important to note that this protocol can also adjust the number of participants up or down.<!-- --><\/li>\n<\/ol>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Everything above deals with decentralization under the assumption of honest participants; however, within a cryptocurrency protocol, we also require incentives. To achieve this, we utilize a collection of primitives referred to as <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/en.wikipedia.org\/wiki\/Verifiable_secret_sharing\">verifiable secret sharing<!-- --><\/a>, which enable us to ascertain if a given node acted honestly during the secret sharing phase. Essentially, this method operates by conducting the secret sharing computations in parallel across two distinct levels: utilizing integers and employing elliptic curve points (other constructions also exist, but since cryptocurrency users are most familiar with the secp256k1 elliptic curve, we will utilize that). Elliptic curve points are advantageous because they have a commutative and associative addition operator &#8211; in essence, they are extraordinary objects which can be added and subtracted much like numerical values. One can convert a number into a point, but not vice versa, and we possess the property that <!-- --><span class=\"chakra-text css-ons8vw\">number_to_point(A + B) = number_to_point(A) + number_to_point(B)<\/span>. By executing the secret sharing mathematics on both the number level and the elliptic curve point level simultaneously, and making the elliptic curve points public, it becomes feasible to verify any misconduct. For effectiveness, we could likely adopt a <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/03\/28\/schellingcoin-a-minimal-trust-universal-data-feed\">Schellingcoin-style protocol<!-- --><\/a> to empower nodes to penalize other nodes that are dishonest.<!-- --><\/p>\n<p><!-- --><br \/>\n<!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"applications\">Use Cases<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">So, what do we possess? If the blockchain acts as a decentralized computer, then a secret sharing DAO serves as a <!-- --><em class=\"chakra-text css-0\">decentralized computer with confidentiality<!-- --><\/em>. The secret sharing DAO incurs significant costs for this additional feature: a network message is imperative for each multiplication and each database access. As<br \/>\n&#8220;`a consequence, gas expenses are expected to be significantly more elevated than Ethereum itself, restricting the processing to primarily basic business logic and preventing the application of various cryptographic computations. Scalability solutions may be utilized to somewhat alleviate this limitation, but there will ultimately be constraints on how far this can extend. Therefore, this technology is likely not to be applicable for every scenario; rather, it will function more like a specialized kernel intended for specific types of decentralized applications. Illustrative cases include:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\"><strong>Medical documentation<!-- --><\/strong> &#8211; maintaining data on a secure decentralized platform could potentially facilitate an intuitive and safe health information system that empowers patients to control their data. Notably, proprietary diagnostic algorithms could operate within the secret sharing DAO, enabling medical diagnosis as a service based on data from different medical examination firms without jeopardizing the risk of unintentional or intentional exposure of your private information to insurers, advertisers, or other companies.<!-- --><\/li>\n<li class=\"css-cvpopp\"><strong>Private key custody<!-- --><\/strong> &#8211; a decentralized M-of-N substitute for centralized password recovery; applicable for both financial and non-financial uses<!-- --><\/li>\n<li class=\"css-cvpopp\"><strong>Multisignature for any application<!-- --><\/strong> &#8211; even systems that do not inherently support arbitrary access policies, or even M-of-N multisignature accessibility, will now support them, provided they utilize cryptography, since the private key can be contained within a secret sharing DAO.<!-- --><\/li>\n<li class=\"css-cvpopp\"><strong>Reputation frameworks<!-- --><\/strong> &#8211; consider the possibility of reputation scores being kept within a secret sharing DAO, allowing you to grant reputation to other users privately, and have your rating contribute to that user\u2019s overall reputation, without anyone being able to view your specific ratings?<!-- --><\/li>\n<li class=\"css-cvpopp\"><strong>Confidential financial networks<!-- --><\/strong> &#8211; secret sharing DAOs could offer an alternative pathway to <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/zerocash-project.org\/\">Zerocash<!-- --><\/a>-style completely anonymous currency, but with the added capability that functionality could be more readily expanded to decentralized exchanges and sophisticated smart contracts. Business entities may want to harness some advantages of operating their enterprises atop crypto without necessarily disclosing every aspect of their internal operations to the general audience.<!-- --><\/li>\n<li class=\"css-cvpopp\"><strong>Matchmaking algorithms<!-- --><\/strong> &#8211; connect employers, employees, dating partners, drivers for your next ride on Decentralized Uber, etc., while performing the matchmaking algorithm computations within SMPC so that no one accesses any of your information unless the algorithm confirms that you are an ideal match.<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In essence, one could perceive SMPC as providing a collection of tools somewhat akin to those theorized to be supplied by <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/bitcoinmagazine.com\/10055\/cryptographic-code-obfuscation-decentralized-autonomous-organizations-huge-leap-forward\/\">cryptographically secure code obfuscation<!-- --><\/a>, with one critical difference: it effectively operates on human-practical time scales.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"further-consequences\">Additional Consequences<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Beyond the aforementioned applications, what additional implications will secret sharing DAOs introduce? Moreover, are there any concerns to address? As it happens, similar to blockchains themselves, a few issues arise. The foremost, and most apparent, challenge is that secret sharing DAOs will significantly expand the range of applications that can be performed entirely privately. Many proponents of blockchain technology often build a considerable part of their case on the crucial observation that while blockchain-based currencies provide unmatched anonymity by not linking addresses to personal identities, they also represent the most transparent form of currency globally, as every transaction appears on a shared ledger. In this context, however, the former remains intact while the latter vanishes completely. What we retain is effectively complete anonymity.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">If this level of anonymity results in a substantial increase in illicit activities, and the public finds the tradeoffs unacceptable, we might anticipate that governments and various institutions, perhaps even joined by volunteer hacker vigilantes, will endeavor to dismantle these systems, and they might even be justified in doing so. Fortunately for these adversaries, secret sharing DAOs have an unavoidable vulnerability: the 51% attack. If 51% of the maintainers of a secret sharing DAO at any given time decide to conspire, they can uncover any of the information under their authority. Additionally, this power is not bound by any statute of limitations: if a group of entities who once constituted over half of the maintaining team of a secret sharing DAO colludes years later, they can still expose information from that earlier period. In conclusion, if society strongly opposes any actions within a secret sharing DAO, there will be numerous opportunities for the operators to collaborate to halt or disclose what\u2019s occurring.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">A secondary, and more nuanced, concern relates to how the concept of secret sharing DAOs undermines a cherished notion in cryptoeconomics: that private keys are not securely tradable. Many protocols explicitly or implicitly rely on this principle, including <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/bitcointalk.org\/index.php?topic=309073.0\">non-outsourceable proof of work puzzles<!-- --><\/a>, Vlad Zamfir and Pavel Kravchenko&#8217;s <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/docs.google.com\/document\/d\/1F81ulKEZFPIGNEVRsx0H1gl2YRtf0mUMsX011BzSjnY\/edit\">proof of custody<!-- --><\/a>, economic frameworks that treat private keys as identities, and any kind of economic status aimed to be untradeable, etc. Online voting systems frequently require that it should be impossible to demonstrate that you voted with a particular key to prevent vote selling; with secret sharing DAOs, the issue is that now you can indeed sell your vote, and quite easily: simply by placing your private key into a contract within a secret sharing DAO and leasing out access.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The implications of this capability to sell private keys are extensive &#8211; in fact, they almost<!-- --><em class=\"chakra-text css-0\">threaten<!-- --><\/em> the integrity of the most robust system securing blockchain: proof of stake. The potential concern is as follows: proof of stake derives its security from users having security deposits on the blockchain, which can potentially be revoked if a user misbehaves in some manner (such as double-voting, voting for a fork, abstaining entirely, etc). Here, as private keys become tradeable, security deposits become tradeable as well. We must pose the question: does this jeopardize proof of stake?<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Fortunately, the response is no. Firstly, there are strong <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/en.wikipedia.org\/wiki\/The_Market_for_Lemons\">lemon-theoretic justifications<!-- --><\/a> for why no individual would genuinely <!-- --><em class=\"chakra-text css-0\">desire<!-- --><\/em> to dispose of their deposit. Should you possess a deposit of $10, to you it represents $10 less the minimal risk of a potential hack. However, if you attempt to transfer that deposit to another person, they will consider a deposit worth $10, unless <!-- --><em class=\"chakra-text css-0\">you<!-- --><\/em> opt to utilize your private key to cast two votes and effectively nullify the deposit. Therefore, from their perspective, there exists a persistent looming danger that you might take away their deposit, and you personally have no motivation to refrain from doing so. The mere action of attempting to sell your deposit should raise their concerns. Thus, from their view, your deposit might be valued at perhaps $8. You have no justification to forfeit $10 for $8, so as a logical agent, you would retain the deposit for yourself.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Secondly, if the private key was held within the secret sharing DAO from the very beginning, transferring access to the key would mean that you would forfeit your access to it. Consequently, you would effectively transfer both authority and responsibility simultaneously &#8211; from an economic perspective, the outcome would be identical to if one of the deposit holders merely experienced a change in identity at some point during the procedure. In reality, secret sharing DAOs could even enhance the proof of stake system by providing a safer platform for participants involved in decentralized stake pools, even within protocols such as <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/tendermint.com\/\">Tendermint<!-- --><\/a>, which do not natively support that functionality.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">There exist additional reasons why the theoretical assaults enabled by secret sharing DAOs might indeed falter in practice. For instance, consider the situation of non-outsourceable puzzles, computational challenges aimed at demonstrating ownership of both a private key and a piece of information simultaneously. One specific implementation of a non-outsourceable puzzle, utilized by <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/www.cs.umd.edu\/~elaine\/docs\/permacoin.pdf\">Permacoin<!-- --><\/a>, involves a computation that must &#8220;bounce&#8221; back and forth between the key and the information hundreds of thousands of times. This is manageable when both pieces of data reside on the same piece of hardware, but becomes unfeasibly slow if separated by a network connection &#8211; and over a secret sharing DAO, the inefficiencies would render it nearly impossible. Consequently, one potential inference from this is that secret sharing DAOs will result in the standardization of a signature scheme that necessitates several hundred million rounds of computation &#8211; ideally featuring extensive serial multiplication &#8211; to execute, at which stage every computer, mobile device, or internet-of-things microchip would possess a built-in ASIC to perform it effortlessly, leaving secret sharing DAOs behind, and allowing us all to progress with our lives.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"how-far-away\">How Far Away?<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">What remains before secret sharing DAO technology can achieve mainstream adoption? In summary, quite a bit, but not overly much. Initially, there is undoubtedly a moderate degree of technical engineering necessary, particularly at the protocol level. Someone must establish a formal SMPC implementation, along with its integration into an EVM framework, likely with multiple constraints for efficiency (for instance, hash functions within SMPC are <!-- --><em class=\"chakra-text css-0\">extremely<!-- --><\/em> costly, leading to the potential disappearance of Merkle tree storage in favor of every contract maintaining a limited number of storage slots), and a punitive, incentive, and consensus structure with a hypercube-style scalability model, followed by releasing the protocol specifications. From that juncture, it would take a few months of development in Python (Python should suffice, as the primary bottleneck will be network latency, not computational power), and a working proof of concept would be achieved.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Secret sharing and SMPC technologies have existed for multiple years, and academic cryptographers have discussed how to create privacy-preserving applications using M-of-N-based primitives and related technologies, such as private information retrieval, for over a decade. The significant contribution made by Bitcoin, however, is the notion that M-of-N frameworks, in general, can be significantly more easily initiated if an economic layer is included. A secret sharing DAO equipped with an integrated currency would incentivize individuals to engage in network maintenance, facilitating the process until it becomes entirely self-sustaining through internal applications. Thus, collectively, this technology is very feasible and not nearly as distant; it is merely a matter of time before someone realizes it.<!-- --><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2014\/12\/26\/secret-sharing-daos-crypto-2-0\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The cryptocurrency 2.0 sector has made significant advancements over the past year in enhancing blockchain technology, including the establishment and, in certain instances, the actual implementation of proof of stake models such as Slasher and DPOS, various types of scalable blockchain mechanisms, blockchains utilizing &#8220;leaderless consensus&#8221; strategies derived from traditional Byzantine fault tolerance principles, along<\/p>\n","protected":false},"author":3,"featured_media":8282,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[1861],"class_list":{"0":"post-10261","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ethereum","8":"tag-return-a-list-of-comma-separated-tags-from-this-title-secret-sharing-daos-the-other-crypto-2-0"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation - WSJ-Crypto<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation - WSJ-Crypto\" \/>\n<meta property=\"og:description\" content=\"The cryptocurrency 2.0 sector has made significant advancements over the past year in enhancing blockchain technology, including the establishment and, in certain instances, the actual implementation of proof of stake models such as Slasher and DPOS, various types of scalable blockchain mechanisms, blockchains utilizing &#8220;leaderless consensus&#8221; strategies derived from traditional Byzantine fault tolerance principles, along\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/\" \/>\n<meta property=\"og:site_name\" content=\"WSJ-Crypto\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-26T13:57:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2100\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"wsjcrypto\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"wsjcrypto\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"28 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/\",\"url\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/\",\"name\":\"Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation - WSJ-Crypto\",\"isPartOf\":{\"@id\":\"https:\/\/wsj-crypto.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg\",\"datePublished\":\"2025-03-26T13:57:37+00:00\",\"author\":{\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#primaryimage\",\"url\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg\",\"contentUrl\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg\",\"width\":2100,\"height\":900},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/wsj-crypto.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wsj-crypto.com\/#website\",\"url\":\"https:\/\/wsj-crypto.com\/\",\"name\":\"WSJ-Crypto\",\"description\":\"Just Another Crypto News Website\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wsj-crypto.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7\",\"name\":\"wsjcrypto\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g\",\"caption\":\"wsjcrypto\"},\"url\":\"https:\/\/wsj-crypto.com\/index.php\/author\/wsjcrypto\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation - WSJ-Crypto","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/","og_locale":"it_IT","og_type":"article","og_title":"Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation - WSJ-Crypto","og_description":"The cryptocurrency 2.0 sector has made significant advancements over the past year in enhancing blockchain technology, including the establishment and, in certain instances, the actual implementation of proof of stake models such as Slasher and DPOS, various types of scalable blockchain mechanisms, blockchains utilizing &#8220;leaderless consensus&#8221; strategies derived from traditional Byzantine fault tolerance principles, along","og_url":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/","og_site_name":"WSJ-Crypto","article_published_time":"2025-03-26T13:57:37+00:00","og_image":[{"width":2100,"height":900,"url":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg","type":"image\/jpeg"}],"author":"wsjcrypto","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"wsjcrypto","Tempo di lettura stimato":"28 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/","url":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/","name":"Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation - WSJ-Crypto","isPartOf":{"@id":"https:\/\/wsj-crypto.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#primaryimage"},"image":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#primaryimage"},"thumbnailUrl":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg","datePublished":"2025-03-26T13:57:37+00:00","author":{"@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7"},"breadcrumb":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#primaryimage","url":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg","contentUrl":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg","width":2100,"height":900},{"@type":"BreadcrumbList","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/03\/26\/unveiling-secret-sharing-daos-a-revolutionary-shift-in-crypto-innovation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wsj-crypto.com\/"},{"@type":"ListItem","position":2,"name":"Unveiling Secret Sharing DAOs: A Revolutionary Shift in Crypto Innovation"}]},{"@type":"WebSite","@id":"https:\/\/wsj-crypto.com\/#website","url":"https:\/\/wsj-crypto.com\/","name":"WSJ-Crypto","description":"Just Another Crypto News Website","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wsj-crypto.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7","name":"wsjcrypto","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g","caption":"wsjcrypto"},"url":"https:\/\/wsj-crypto.com\/index.php\/author\/wsjcrypto\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/10261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/comments?post=10261"}],"version-history":[{"count":2,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/10261\/revisions"}],"predecessor-version":[{"id":10267,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/10261\/revisions\/10267"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/media\/8282"}],"wp:attachment":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/media?parent=10261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/categories?post=10261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/tags?post=10261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}