Hacker Dōjo Workshop：
Type: Cryptography
Grant：200 USDT
Bounty：https://dorahacks.io/daobounty/199
Dojo hacker：samar
Bounty rewards：https://bscscan.com/tx/0x94953a1415cff5a05fddb73e3493622e14ec6483d5ebcf096c0f6f802e6e0fd7
Funded by Dōjo, please contact us before reprinting the article:
Telegram: @DoraDojo0
WeChat: @HackerDojo0
Email: hackerdojo0@gmail.com
I. Introduction
Zeroknowledge proof is a cryptographic concept that enables one party to prove to another that a statement is true, without revealing any additional information. This is achieved by using complex mathematical algorithms and protocols that ensure the confidentiality of information. Zeroknowledge proofs have been used in various applications, such as secure digital voting systems, identity verification, and privacypreserving financial transactions.
PLONK (Permutations over Lagrangebased Oneway Functions) is a recent development in the field of zeroknowledge proof systems. It is a postquantum secure proof system that is designed to work even in a quantum computing environment, where traditional cryptographic systems are vulnerable. PLONK is built on the principles of polynomial commitment and polynomial evaluation, and is considered to be one of the most efficient zeroknowledge proof systems in existence.
One of the key advantages of PLONK is its ability to achieve succinctness, meaning that the proof size can be significantly smaller than other proof systems, making it more suitable for use in practical applications. Additionally, PLONK is highly flexible and can be used for a wide range of applications, from digital asset transfer to privacypreserving computations.
In conclusion, PLONK is a promising development in the field of zeroknowledge proof systems, offering a high level of security and efficiency, and the potential to be used in various realworld applications. This manuscript will provide a detailed overview of PLONK, including its technical background, implementation, and potential applications.
Example of ZeroKnowledge Proof using PLONK
Suppose Alice wants to prove to Bob that she knows a secret value x, without revealing x to Bob. Using PLONK, Alice can construct a zeroknowledge proof to show Bob that she knows x.
Step 1: Commitment
Alice first generates a commitment to x, using a polynomial commitment scheme. She selects a random polynomial f(z) of degree n and sets f(0) = x. She then sends the commitment to Bob, along with the value of n.
Step 2: Challenge
Bob generates a random challenge value r and sends it to Alice.
Step 3: Response
Alice uses the challenge value r to calculate the value of f(r), and sends it back to Bob.
Step 4: Verification
Bob verifies the proof by evaluating the polynomial f(z) at two points: x = 0 and x = r. If the result is the same as the commitment and the response, respectively, then Bob can be confident that Alice knows the value of x without revealing it.
In this example, PLONK has enabled Alice to prove knowledge of a secret value x to Bob, without revealing the value itself. This process can be applied to many other scenarios, such as proving identity or proving the validity of a transaction, providing a secure and private method for exchanging information.
ZeroKnowledge Proof (ZKP) is a type of proof that allows one party to prove to another party that a statement is true without revealing any additional information beyond the fact that the statement is true. In other words, ZKP enables the verifier to confirm the validity of a statement without learning any additional information about the statement. The crucial aspect of ZKP is that it is possible to prove the validity of a statement without revealing any additional information.
An example of ZKP is a person wanting to prove to a bank that they have a certain amount of money in their account, without revealing their account number or any other sensitive information. The person can use ZKP to prove that they have the money by creating a cryptographic commitment to their balance, and then providing a proof that the commitment is valid. The bank can then verify the proof without seeing the person’s actual account information.
In this example, the person has proved the validity of their statement without revealing any information that could be used to compromise their account or privacy. ZKP is used in many fields, including cryptography, blockchain, and online privacy, to provide secure and private methods of communication and verification.
PLONK (Pinocchio Logic Of Negative Knowledge) is a zeroknowledge proof construction that allows for verifiable computations to be performed on encrypted data. It is a noninteractive proof system that provides a method for proving the integrity of computations without revealing the inputs or the results.
PLONK utilises a Pinocchiostyle proof, which is based on the cryptographic principle of committing to a value and later revealing it, combined with polynomial commitments. The proof consists of two phases: the setup phase and the proving phase.
In the setup phase, a trusted setup procedure generates a common reference string (CRS), which is publicly available. The CRS includes the public parameters and the polynomial commitments required for the proof.
In the proving phase, a prover performs the computation on the encrypted inputs and generates a proof that the computation was performed correctly. The proof is then sent to a verifier, who checks the validity of the proof without knowing the inputs or the result of the computation.
PLONK has several advantages over other zeroknowledge proof constructions, including its efficiency and versatility. It can be used to perform a wide range of computations, including additions, multiplications, and more complex functions. It also has a relatively small proof size and can be verified in parallel, making it wellsuited for use in blockchain applications.
An example of the use of PLONK could be in a blockchain application where a prover wants to prove that a certain computation was performed correctly without revealing the inputs or the results to the public.
Here’s how PLONK works in this scenario:
 Setup Phase: A trusted setup procedure generates a common reference string (CRS), which includes the public parameters and the polynomial commitments required for the proof. The CRS is publicly available.
 Proving Phase: The prover performs the computation on the encrypted inputs and generates a proof that the computation was performed correctly. This proof is sent to the verifier.
 Verifying Phase: The verifier checks the validity of the proof without knowing the inputs or the result of the computation. If the proof is valid, the verifier can be confident that the computation was performed correctly.
In this example, the prover can prove that the computation was performed correctly without revealing the inputs or the results to the public. The verifier can check the validity of the proof without knowing the inputs or the results, ensuring the privacy of the data.
PLONK’s efficiency and versatility make it wellsuited for use in blockchain applications and other scenarios where verifiable computations on encrypted data are needed. It is a powerful tool for ensuring the privacy and integrity of data in a variety of contexts.
ZKP is important for privacy and security because it allows parties to verify information without revealing sensitive data. This is crucial in many applications, such as online transactions, where the parties involved do not want to reveal their identities or other sensitive information. With ZKP, parties can prove the validity of a transaction or a statement without revealing any additional information, which protects their privacy and enhances security.
In addition, ZKP can be used to prevent fraud and ensure the integrity of data. For example, in a voting system, ZKP can be used to verify the validity of a vote without revealing who the voter is. This ensures the privacy of the voter and the integrity of the election.
In conclusion, ZKP is an important tool for privacy and security, and its importance is only expected to grow as the need for secure and private transactions increases. By allowing parties to verify information without revealing sensitive data, ZKP enhances privacy and security, making it an essential component in many cryptographic systems.
Zeroknowledge proofs (ZKPs) are an important concept in cryptography that allow one party to prove to another that a statement is true, without revealing any additional information. This property is crucial in ensuring the privacy and security of sensitive information, as well as for building trust in decentralized systems.
One example of the importance of ZKPs can be seen in the field of digital identity verification. Imagine a scenario where a user wants to prove their age to an online service, but they do not want to reveal their date of birth. In this case, a ZKP could be used to prove that the user is over a certain age, without revealing the exact date of birth.
Another example is in the field of financial transactions. In a decentralized system, a ZKP can be used to prove that a user has enough funds in their account to make a transaction, without revealing the exact balance. This can be useful in preventing fraud and preserving the privacy of users’ financial information.
ZKPs are also important in blockchain technology, where they can be used to perform verifiable computations on encrypted data, without revealing the inputs or the results. This enables secure, decentralized applications to be built on top of blockchains, such as decentralized exchanges and voting systems.
In summary, ZKPs play a crucial role in ensuring the privacy and security of sensitive information, as well as for building trust in decentralized systems. They can be used for digital identity verification, financial transactions, and for performing verifiable computations on encrypted data in blockchain technology.
II. Background
ZeroKnowledge Proofs (ZKPs) are cryptographic techniques that allow one party (the prover) to prove to another party (the verifier) that a statement is true, without revealing any additional information beyond the statement being true. This concept has been the subject of intense research for decades, and has been used in various applications such as secure authentication, privacypreserving data analytics, and digital asset management.
The concept of zeroknowledge proofs was first introduced by researchers at the Massachusetts Institute of Technology (MIT) in the late 1980s. The initial work on ZKPs focused on constructing interactive proof systems, where the prover and verifier engage in a backandforth conversation to verify a statement. Over time, researchers have developed new techniques for constructing ZKPs that are noninteractive, meaning that the prover can prove a statement to the verifier without any additional communication
Since the initial work on ZKPs, the field has evolved rapidly. Researchers have developed new techniques for constructing ZKPs that are more efficient and secure, and have applied ZKPs to a wider range of applications. One important development has been the introduction of zeroknowledge succinct noninteractive arguments of knowledge (zkSNARKs), which allow for the efficient verification of complex statements.
ZKPs have been applied to a wide range of applications, including secure authentication, privacypreserving data analytics, and digital asset management. For example, in secure authentication, ZKPs can be used to prove that a user knows a password without revealing the password to the authentication server. In privacypreserving data analytics, ZKPs can be used to perform analytics on sensitive data without revealing the data to the analyst. In digital asset management, ZKPs can be used to prove ownership of a digital asset without revealing the underlying data associated with the asset.
Example:
Suppose Alice wants to prove to Bob that she knows the password to her account, without revealing the password to Bob. Alice can use a ZKP to prove to Bob that she knows the password, without revealing the password itself. This could be accomplished by using a cryptographic hash function to map the password to a unique string, and then using a ZKP to prove that Alice knows the preimage of the hash function. Bob can then verify that Alice knows the password without learning the password itself.
III. What is PLONK?
PLONK is a type of ZeroKnowledge Proof (ZKP) that allows one party to prove to another that they possess certain information, without revealing the information itself. Here’s an example to illustrate how PLONK works:
Suppose Alice wants to prove to Bob that she knows the secret password to access a secure website, but she doesn’t want to reveal the password itself.
To do this, Alice uses PLONK to create a proof that satisfies certain mathematical conditions. The proof shows that Alice knows the password, without revealing what the password actually is.
Bob can verify the proof without learning the password, ensuring the privacy and security of the information. This allows Alice to prove her knowledge without revealing sensitive information, making PLONK a useful tool for privacysensitive applications.
PLONK (Proof of Logical Knowledge) is a zeroknowledge proof construction in cryptography, allowing one to prove the possession of a secret value without revealing that value.
For example, consider a bank wants to verify the age of a customer without revealing the customer’s exact birthdate. The customer creates a PLONK proof that proves they know a value that can be derived from their birthdate and satisfies certain conditions (e.g. it must be greater than a minimum age requirement). The bank can then verify this proof without learning the customer’s birthdate. This way, the customer’s privacy is protected while the bank is still able to verify their age.
PLONK (Proofs of Logical Knowledge) is a type of zeroknowledge proof (ZKP) that aims to provide more efficient, scalable, and flexible solutions for privacypreserving protocols. PLONK is built on the technique of circuitbased proof systems and uses polynomial commitments and universal hash functions to create a compact proof.
Compared to other ZKP systems such as zkSNARKs, PLONK has several advantages:

Scalability: PLONK uses a more efficient and modular construction, allowing for much larger proofs that are more scalable and suitable for use in decentralized systems.

Flexibility: PLONK allows for the creation of custom proof systems that can be tailored to the specific needs of different applications, whereas zkSNARKs are often limited to specific use cases.

Security: PLONK is based on a newer and more secure cryptographic assumption, the Learning with Errors (LWE) assumption, compared to zkSNARKs which rely on the older and less secure Generalized Birthday Problem (GBP) assumption.
Example:
Suppose a user wants to prove to a verifier that they know a secret value x, but without revealing x. Using PLONK, the user could create a proof that shows that they know a value y such that y^2 = x, without revealing x. The verifier could then verify that the proof is valid without learning the value of x. This allows the user to prove their knowledge of the secret value in a privacypreserving manner.
 Feature and benefits of PLONK
Scalability: PLONK is designed to handle larger proof sizes, making it more scalable and suitable for use in decentralized systems.
 Flexibility: PLONK allows for the creation of custom proof systems that can be tailored to the specific needs of different applications, which is not possible with other ZKP systems.
 Security: PLONK is based on a newer and more secure cryptographic assumption, the Learning with Errors (LWE) assumption, which provides a higher level of security compared to other ZKP systems.
 Performance: PLONK is faster than other ZKP systems due to its efficient and modular construction.
 Transparency: PLONK allows for the creation of opensource proof systems, making it easier for the community to audit and verify the system’s security.
 Privacy: PLONK provides a high level of privacy by enabling users to prove their knowledge of a secret value without revealing the value itself.
 Interoperability: PLONK allows for the creation of proof systems that can be used across different blockchain platforms and applications, improving interoperability and reducing the need for multiple solutions for different use cases.
Overall, PLONK offers several key benefits over other ZKP systems, including scalability, flexibility, security, performance, transparency, privacy, and interoperability, making it a promising solution for privacypreserving protocols.
IV. How PLONK works?
PLONK (Proofs of Logical Knowledge) is a proof system for verifying the correctness of computations in a transparent and scalable manner.
It operates using a combination of polynomial commitment schemes, universal hash functions, and a zkSNARK (ZeroKnowledge Succinct NonInteractive Argument of Knowledge) proof system. This allows PLONK to create succinct and noninteractive proof objects that can be verified efficiently, proving the correctness of computations without revealing any private information.
PLONK is used in various applications, including privacypreserving smart contracts, anonymous token transfers, and secure computation in decentralized networks.
An example of using PLONK can be in a privacypreserving smart contract scenario, where multiple parties need to perform computations on sensitive data without revealing it to each other.
Suppose Alice and Bob want to perform a secure computation on their respective inputs, “AliceInput” and “BobInput.” They first compile their inputs into a circuit, which defines the computation they want to perform. They both generate PLONK proofs, which prove the correctness of their inputs without revealing the inputs themselves.
Next, the two proof objects, along with the compiled circuit, are sent to a trusted setup authority, who creates a common reference string (CRS). The CRS is used to verify the proofs and perform the computation on the inputs, giving the result “Result.”
Finally, Alice and Bob can each verify the correctness of the computation using the CRS and the proofs, ensuring that the computation was performed correctly and that their sensitive inputs were kept private.
This is just a simple example to give an idea of how PLONK can be used. The actual implementation may be more complex and may involve other security measures to ensure privacy and security.
 Overview of the PLONK construction
PLONK (Proofs of Logical Knowledge) is a zkSNARK (ZeroKnowledge Succinct NonInteractive Argument of Knowledge) construction used for constructing zeroknowledge proofs. It is a protocol for proving the integrity of a computational process without revealing the inputs or outputs. PLONK provides privacy and security guarantees by allowing a prover to prove the knowledge of a statement without revealing the underlying information.
The PLONK construction consists of the following components:
 A trusted setup: A process used to generate common public parameters for the prover and verifier.
 A proving algorithm: The prover uses this algorithm to generate a zeroknowledge proof of a statement.
 A verification algorithm: The verifier uses this algorithm to check the validity of the proof generated by the prover.
 A circuit: A Boolean circuit that defines the relationship between inputs and outputs and the statement being proven.
The PLONK construction is efficient, as it produces small proofs and has low computational overhead. It is also secure, as it provides strong security guarantees against a wide range of attacks.
In conclusion, PLONK is a practical and efficient zeroknowledge proof construction that provides privacy and security guarantees, making it useful for a wide range of applications, such as privacypreserving financial transactions, secure voting systems, and secure data sharing.
 Explanation of the various components of PLONK
PLONK is a proof of replicability and knowledge in zkSNARKs. It is composed of several components, including:
 Prover: This component generates a proof for the statement being proven and sends it to the verifier.
 Verifier: This component receives the proof from the prover and verifies it to ensure that the statement is indeed true.
 Circuit: This is a boolean logic circuit that defines the constraints and relationships between the inputs and outputs of the proof.
 Public parameters: These are public inputs to the proof that are used to define the underlying cryptographic assumptions, such as the choice of elliptic curve.
 Proof: This is the output generated by the prover, which can be verified by the verifier to show that the statement is true.
Example:
Suppose Alice wants to prove to Bob that she knows the secret value “x” without revealing the value itself. In this scenario, Alice can be the prover and Bob can be the verifier. The circuit could be a boolean comparison that checks if the value of “x” is equal to a certain number. The public parameters would be the choice of elliptic curve and the proof would be the output generated by Alice that demonstrates that she knows the secret value “x”.
 The role of elliptic and pairing operations in PLONK
PLONK (Proofs of Logical Knowledge) is a zeroknowledge proof system that is based on the algebraic properties of elliptic curves and pairing operations.
Elliptic curves are mathematical objects that have certain algebraic properties and can be used for cryptographic purposes. In PLONK, elliptic curves are used to construct zeroknowledge proofs that are able to prove that a certain computation has been performed without revealing any information about the inputs.
Pairing operations are a type of mathematical operation that can be performed on elliptic curves. In PLONK, pairing operations are used to efficiently verify the proof and ensure that it satisfies the required algebraic properties.
For example, in PLONK, a prover can prove that they know a secret value x without revealing it to the verifier. The prover can create a proof that consists of two elliptic curve points, g^x and h^x. The verifier can then use a pairing operation to efficiently verify that the pairing of g^x and h^x is equal to a known value e(g,h). If the pairing is equal to e(g,h), then the verifier can be confident that the prover knows the secret value x, without actually learning what x is.
V. Advantages of PLONK
PLONK is a ZeroKnowledge Proof system that enables private and efficient verification of computations. Some of its advantages are:
PLONK has a logarithmic proof size and verification time, making it more efficient and scalable than other ZKP systems.
The logarithmic proof size and verification time of PLONK means that as the size of the computation being verified grows, the size and time required to verify the proof grows at a slower rate compared to other ZKP systems. This makes PLONK more efficient and scalable.
For example, let’s say a computation involves verifying the sum of 1 million numbers. In a traditional ZKP system, the proof size and verification time would grow linearly with the size of the computation, becoming increasingly impractical as the computation grows.
However, with PLONK, the proof size and verification time would grow at a slower logarithmic rate, making it much more efficient and scalable. This allows PLONK to handle much larger computations without sacrificing performance, making it a more practical solution for realworld applications.
PLONK uses stateoftheart cryptographic primitives and has been designed with security as a top priority. This makes it more secure compared to other ZKP systems.
PLONK uses stateoftheart cryptographic primitives and has been designed with a strong focus on security, which makes it more secure compared to other ZKP systems.
For example, consider a financial application that uses ZKP to verify transactions without revealing sensitive information such as account balances. In this scenario, security is a top concern as any vulnerability in the ZKP system could lead to financial losses or compromise sensitive information.
With PLONK, the use of strong cryptographic primitives and a strong focus on security during its design process means that it is less likely to have vulnerabilities compared to other ZKP systems. This makes it a more secure option for applications that require privacy and security.
In conclusion, PLONK’s use of stateoftheart cryptographic primitives and its focus on security make it a secure and reliable solution for privacypreserving computations.
PLONK is designed to be compatible with other cryptographic systems and can be easily integrated with them. For example, it can be used in conjunction with blockchain technology to enable private and secure transactions.
PLONK’s compatibility with other cryptographic systems is a major advantage, as it allows for seamless integration with existing systems.
For example, consider a blockchainbased financial application that requires private and secure transactions. With PLONK, the application can use PLONK’s ZeroKnowledge Proofs to verify transactions without revealing sensitive information, such as account balances.
The compatibility of PLONK with the blockchain technology means that it can be easily integrated into the existing system, providing a secure and private solution for transactions without the need for major changes to the existing infrastructure.
In conclusion, PLONK’s compatibility with other cryptographic systems makes it a versatile solution that can be easily integrated into existing systems to provide secure and private solutions for a wide range of applications.
VI. Use Cases for PLONK
PLONK (Proofs of Logical Knowledge) is a privacyfocused technology that can be used in various applications to enable secure and private transactions. Some common use cases for PLONK include:
 Confidential Transactions: PLONK can be used to conceal the details of a transaction, such as the sender, recipient, and amount, while still allowing the validity of the transaction to be verified.
 PrivacyPreserving Identity Verification: PLONK can be used to verify identities without revealing personal information.
 Secure Voting Systems: PLONK can be used to develop secure and private voting systems, where votes can be cast anonymously while maintaining the validity of the election results.
 Supply Chain Management: PLONK can be used in supply chain management to maintain the privacy of transactions while still allowing for the verification of the authenticity of goods.
 Medical Records: PLONK can be used to protect the privacy of medical records, while still allowing authorised parties to access and verify the information.
These are just a few examples of the potential use cases for PLONK. The technology is still in its early stages and has the potential to be applied in many other fields where privacy and security are important considerations.
PLONK can be used to hide transaction details such as sender, recipient, and amount from being publicly visible on the blockchain. This can enhance privacy and security for users.
Private transactions on blockchain refer to a mechanism where the details of a transaction such as sender, recipient, and amount are hidden from being publicly visible on the blockchain. This enhances the privacy and security for users as their financial information is not available for anyone to see. An example of this is the zkSNARKs technology used in the Zcash cryptocurrency, which allows for private transactions on the Zcash blockchain.
PLONK can be used for identity verification purposes, where personal information can be kept confidential and only the validity of the information can be verified without revealing the actual information.
Identity verification is a process of confirming the identity of an individual. This can be done by verifying personal information such as name, date of birth, address, governmentissued ID number, etc. In the context of PLONK, it can be used to perform identity verification while maintaining the privacy of the individual’s information. For example, a PLONKbased identity verification system might hash the individual’s personal information and store the hash on the blockchain. When the identity verification is needed, the system can compare the hash of the submitted information to the one stored on the blockchain, thereby verifying the validity of the information without revealing the actual information. This way, personal information can be kept confidential, and only the validity of the information can be verified.
PLONK can be used to develop a secure and private voting system. PLONK ensures that votes can be cast anonymously while maintaining the validity of the election results.
VII. Future of PLONK
Secure voting systems are systems that protect the confidentiality and integrity of the voting process to ensure that the election results are accurate and cannot be tampered with.
For example, PLONK (Private and Logical Ouroboros NonInteractive Key) is a secure and private voting system that can be used for this purpose. With PLONK, votes are cast anonymously and securely, and the election results are kept private and tamperproof. The validity of the election results is ensured through the use of cryptographic proof methods, which are checked by the system to confirm that the results are accurate.
In the future, PLONK has the potential to be widely adopted for secure voting systems and other applications that require secure and private communication.
VII. Future of PLONK
PLONK is a cuttingedge zeroknowledge proof system that has the potential to revolutionize the way we think about privacy and security. In the near future, PLONK is likely to see continued development and improvement, with a focus on increasing efficiency and scalability.
Additionally, PLONK may be integrated with other cryptographic systems to provide even more advanced privacypreserving solutions. For example, PLONK could be used in combination with homomorphic encryption to enable secure computations on encrypted data.
In terms of applications, PLONK has a wide range of potential uses, including privacypreserving financial transactions, secure voting systems, and privacypreserving data storage and processing. As more organizations seek to protect sensitive information and meet privacy regulations, PLONK could become an increasingly important tool for ensuring secure and private communication.
Overall, the future of PLONK looks promising, with the potential to play a significant role in shaping the future of privacy and security.
PLONK is a succinct noninteractive argument of knowledge, a zeroknowledge proof system.