Technical Analysis of Super-ZK Protocol (SERO) ProductsSome time ago, I was working on enterprise blockchain system and contacted some privacy-related technologies. Since in most cases, the business data on the blockchain belongs to the trade secrets of the parties to the transaction, it is impossible for users to have unlimited access. However the decentralization feature of the blockchain determines that it is impossible to create a central credit agency to preserve these confidential data.
Therefore, I am very concerned about the development of the anonymous blockchain technology in the public blockchains. I have focused on popular anonymous blockchain technologies such as Monero, Dash and Zcash. The application of technologies such as ring signature and coin mixer is too limited, and the Zero Knowledge used by Zcash proves to be suitable for most scenarios, but it has been slow and not very applicable. Moreover, they have not achieved support for Turing's complete smart contracts. Based on the Bitcoin-based UTXO, these technologies are not friendly to the implementation of smart contracts.
A few days ago, during a company dinner, a colleague mentioned that a public blockchain called
Super Zero Protocol (SERO) appeared recently. It is an anonymous blockchain that supports Turing's complete smart contracts and is implemented with zero-knowledge proofs. It is said that the development has been completed at present. This has aroused my interest, so I intend to study it and see if I can learn something from it.
Official website and White paper To be honest, the marketing and SEO of SERO team did not do good enough. When I searched for
sero from the internet, I did not find the SERO offical website on the first page of the search results. I didn't have any information about this public chain until I searched for
sero cash.
According to the information provided by the official website, the SERO development team should be in China, basically Chinese. From the resume on linkdin, these guys have extensive R&D and engineering practice experience in the technical fields. If it is like the official announcement, SERO is the world's first anonymous blockchain that supports Turing's complete smart contract, and it is 20 times faster than Zcash in generating zero-knowledge proofs. It is a very exciting project.
Links to white papers and GitHub open source projects can be found on the official website. According to the official information, the SERO project has been developed and is open source. So I downloaded the white paper and made a brief analysis of the source code in GitHub.
Advanced Source Code
I found a very interesting thing that subverted my understanding of the blockchain projects.
The usual blockchain project's white paper is ahead of its source code for many development cycles. In the most extreme cases, some of the projects, their white papers were writen in fancy but the project team may have disappeared before the main chain is developed.
For the SERO project, its source code goes beyond the white paper for several cycles. In other words, I found that the official website V1.0.6 white paper only maps the source code of SERO a month ago (Alpha 0.1 version). These features released by the current (Beta 0.3.0) version, such as "Transaction Generation Speed Optimization", "Issuance of Anonymous Tickets" and "Test Invitation License", are not reflected in the white paper.Perhaps the SERO team update the white paper every time after development.
The Basic Theory of Anonymous Coins According to the SERO white paper, Anonymous coins have three basic characteristics,
Un-traceable, Un-associable, Anti-statistical analysis. These are very understandable.
You should not be able to track the source, destination, amount of coins and other transactions of the same account of the transaction even using big data analysis.
In addition, the SERO white paper also proposes
an optional audit solution. For example, you can set your spouse as an optional auditor, so everyone can't get information related to your transactios except you and your spouse. And besides you, even your spouse cannot use your money.
In SERO's white paper, anonymous assets and smart contracts are divided into online and offline categories. According to the above description, the anonymous tickets added by the Beta version should be in the category of _ online anonymous assets.
This function is very informative and interested guys can read the white paper yourself.
In addition, SERO's official announcement mentioned that they have a Super-ZK C++ library, which is 20 times more efficient than Zcash's ZK-snarks, and gives a video comparing with Zcash. I searched Github for a long time and didn't find the library.
Later, I discovered that it appeared to be a library named
go-czero-import, which references a C++ library named czero. There is an interface for generating transaction certificates.
SERO's FeaturesIn order to try and debug the functions of SERO, I cloned all the source code of SERO. I found that the SERO project still has a serious problem. As a project with a complete product, there is no unified introduction to the entire product set, which leads me to explore various functions by myself. This is really a waste of time.
SERO's main node program gero was changed with the Go language version of Ethereum geth, although it seems that there are a lot of changes, but the trunk has not changed. Fortunately, I am very familiar with geth, only encountered a small problem when I linked the C++ dynamic library. Finally, according to the readme on GitHub, it was successfully compiled and run on the MACOS system and the CENTOS7 system respectively.
SERO's entire product system includes the following systems and features:
go-sero Full Node Service ProgramCode location:
http://github.com/sero-cash/go-seroGet the program gero after compiling.
Background Service function
When gero starts up, according to the configuration, the node will automatically choose to synchronize the data of AlphaNet or BetaNet, act as a full data node in the network, and execute the commands issued by the client.
Client Wallet or
Interactive Console Connect all nodes through rpc or ipc.
Interactive Console When the console parameter is added to gero, gero becomes a
interactive console. I have to say that the operation mode of the commands in gero is almost the same as that of Ethereum, which has no threshold for people like me who are familiar with Ethereum commands.
Account Management and Anonymous AssetsIn terms of account management, the asset query results provided by gero are divided into two types, Tkn and Tkt. I didn't find the corresponding documents, but according to the online publicity information, they should represent Token and Ticket respectively, which is called the token and the ticket. A ticket can be considered as a non-homologous pass, unique and indivisible. According to the white paper and promotional materials, both assets are anonymous assets. In other words, when you make a transaction, SERO will hide the information of these two assets.
Anonymous transactionsBecause I don't have a test license for AlphaNet or BetaNetand and can't confirm the transaction through mining, so I tested the anonymous transaction with Dev mode. On my machine, I can see that the transaction generation time is 7s. From the transaction data, the transaction certificate uses the Commitment mode to determine that it is an anonymous transaction. As for what AssetCM and OutCM represent, I don't understand what it means, and I will study it carefully until I read the source code or the latest white paper.
Ledger Creation (Mining)This command is consistent with Ethereum. From the block structure, the minin address of the miner accepting the reward is changing. This address should correspond to the temporary address (PKr) described in the white paper, that is, no one will know who mines this block except the miners themselves.
Smart ContractsThe installation steps for smart contracts are also consistent with Ethereum. The community's promotional information mentions that SERO is compatible with the Ethereum Smart Contracts. I copied the deployment code from Ethereum's Remix editor, changed the eth in the code to sero and tested it. The results showed that there was no problem in installation and operation. Smart contracts can issue anonymous Tokens and Tickets. In this case, the anonymous version of ERC20 and ERC721 smart contracts should be implemented.
Asset IndependenceThis feature was discovered by myself and was not clearly stated in the v1.0.6 white paper. For anonymous Token and Ticket assets, they are independent of issuing their own smart contracts.
This means that assets and rules are independent of each other. The anonymous asset issued by the smart contracts are equivalent to the status of the SERO currency, not stored in the map of smart contracts. This approach makes the adaptability of SERO smart contracts beyond Ethereum, breaking the boundaries between smart contracts, and many complex functions are easier to be implemented. For example, smart contracts for decentralized exchanges can be written on SERO.
Smart Contract Editor
URL:
https://remix.web.sero.cash The SERO Remix editor comes with examples of how to issue anonymous tokens and anonymous tickets.
Blockchain Browser
URL:
https://explorer.web.sero.cash The SERO product set includes a succinct block browser. The block browser contains two types of views: Block and Transaction. In the blockchain browser, the SERO coins and the anonymous token issued by the SERO smart contracts have the transaction address of the temporary address Pkr because of their anonymous features and the transaction amount will replace the actual transaction amount with 0.
However, for SERO's block browser, I feel that the team can do some work on smart contract data display in the future. After all, for a blockchain application, even in the case of most transaction encryption, it is very necessary for some public information to be displayed in the smart contracts.
Wallet According to community announcement, the wallet client will be open source before the 24th November, the wallet will include
account management, transaction management and smart contract management. As it is not released currently, the above picture is copied from the announcement article.
Development and Test EnvironmentAccording to the information on github, SERO has four environments:
Dev environment is used for personal testing and requires manual linking to form a network, you need to manually link to form a network, it can be started with the parameter --dev. This is the environment in which I tried SERO.
AlphaNet is the internal test network of the SERO team. It is started with the --alpha parameter and user can be added to this network, but basically it is not necessary.
BetaNet is a community public beta network that uses the POW consensus. It is said that the SERO coins mined in BetaNet will be mapped into MainNet one by one. However, mining in this network requires a test license from the mail
[email protected]. I sent out a test application and hope to pass the review as soon as possible.
MainNet is the main network and will be launched next year. According to the white paper, the POW consensus will be replaced by the SE-Random consensus. The description of this algorithm in the white paper is almost the same as Algorand. As for whether the ideal 3000 TPS can be achieved, it can only be seen how SERO was implemented at that time. However, for anonymous coins, whether TPS is high enough is not my biggest concern. I am more concerned about whether it can satisfy most application scenarios.
Reference
[Website]
https://sero.cash[White paper V1.0.6]
1.amazonaws.com/Sero_ENG_V1.06.pdf">http://sero-media.s3-website-ap-southeast-
1.amazonaws.com/Sero_ENG_V1.06.pdf[Source code]
https://github.com/sero-cash/go-sero[SERO Blockchain Browser]
https://explorer.web.sero.cash/blocks.html[SERO Smart Contract Editor]
https://remix.web.sero.cash/[SERO Introduction Video]
https://www.youtube.com/watch?v=lqFUhXskgNg[SERO vs Zcash Video]
https://www.youtube.com/watch?v=bc6yHTLSl5M