Perun state channels AMA with PolyCrypt

Hello everyone, we are PolyCrypt GmbH, cryptography- and blockchain-/cryptocurrency-focused company located in Darmstadt, Germany, with close ties and origins in the technical university of Darmstadt. We are currently building our blockchain-agnostic state channel protocol, Perun as a canister on the IC as part of the grants program, and we hope to receive a follow-up grant to make it feature-complete and fully usable.

What is Perun?

Perun is a scaling solution, allowing fee-less, 0-latency off-chain P2P transactions, ranging from simple transfers to smart contract execution. Our blockchain-agnostic state channel protocols have been formally proven secure in peer-reviewed research and our client software, go-perun currently has back-ends for Ethereum, Polkadot, Cosmos, and more. If you’re interested in hacking with go-perun, check out our tutorials. Additionally, we are in the process of adding another back-end for Hyperledger Fabric and Cardano. We also want to expand into the Dfinity world, where we need your engagement and support to realize our ambitions!

Perun on the IC

In a previous grant last year, we built the basic on-chain logic for our payment channel adjudicator, but ICP handling for canisters was not available back then. We are currently finishing up a follow-up grant in which we extended to handle ICP tokens and have already built the first component (key management and signatures) for client-side integration with go-perun. We see great promise in the IC ecosystem and actively engaged with Token standards and the development team in efforts to help the IC grow in a developer- and user-friendly direction. In the future, we seek to receive follow-up grants that complete the client-side integration for the IC in our library and want to bring full state channel support to ICP. This will allow for the creation of blockchain games that can massively scale, bringing data privacy while keeping the reliability of the IC.

General future outlook

We are currently working on cool features, such as cross-chain payment channels, for which we already have a demo web-app (alternatively, we have a video). This will allow writing off-chain dApps that do not confine users to a single blockchain. There are also cool side projects to look forward to, such as a proof of concept of a card game running in a state channel currently being developed by students of the TU Darmstadt.

Perun AMA

In this thread, we want to say hello to everyone in the IC community officially, and do an AMA on PolyCrypt and especially the Perun protocol. We hope to create connections with existing or upcoming IC projects, discuss how your projects could benefit from the technology we provide and receive feedback or wishes of other developers or users regarding features you would like to see.

You can also check out our Perun discord, where you can connect with us if you require a more private, one-on-one discussion with our staff. Please note that I cannot make official decisions, as I am only a core developer, but I can refer you to the appropriate people if you contact me directly on discord.

12 Likes

Welcome back to the IC.

1 Like

Hey @RmbRT !

Thank you for the kind introduction. Perun sure is a fascinating project but I am not sure about some aspects that might be relevant to projects.

Is there some sort of confidentiality in channels? Can the logic possibly executed in them be viewed by a third party (the node operator or maybe even everyone?)

We are currently working on cool features, such as cross-chain payment channels

How is security guaranteed? I mean, especially if I read ‘cross-chain’, exploits without end come to mind. Could this affect the IC?

And lastly: How was your experience in working with the IC? I get the feeling that there is no general consensus on usability for devs. But I’m not an expert on this at all (just went through some discords).

1 Like

Channels in Perun are semi-private, insofar that the in-between states are never published. Only the final state is published to settle the channel and pay out the latest agreed-upon balances to the participants. However, since the state contains application-specifc data, unless the application developers deliberately empty the data for the channel’s final state, some data will be made public. Also, in case any party behaves maliciously, a dispute can be filed on-chain, and that also involves publishing a state. To settle the dispute, the application logic of the channel needs to be available on-chain, and therefore it is public (however, by purposely not providing the application logic on-chain, the developers can keep it hidden, thereby opting out of resuming the application on-chain). The data inside the channel may be revealed at any time if any of the participants file a complaint, but in an honest execution scenario, where no party behaves maliciously, all data can be hidden, as no complaint would need to be filed.

So, in short, the privacy guarantees strongly depend on the application that is run in the channel, as well as the trust setting between the participants and the desired on-chain capabilities.

Since it is not a true token bridge, but more similar to an atomic swap, the tokens themselves cannot be attacked like it is the case with token bridges. As long as both chains have a stable consensus, liveness and are reachable, both participants can securely establish a channel. This is done by registering the channel (which is an abstract off-chain entity) on both chains first, funding the respective assets on both chains, and then operating on the channel as usual. Once the participants want to close the channel, they simply register its agreed-upon balance outcome on both chains, and withdraw the funds. The security scenario is essentially identical to single-chain channels, but with additional problems like one participant being unable to contact only a specific chain or something like that. But those differences in the attack vectors are negligible for all practical attacks and purposes.

It was tough initially, due to still sparse documentation, but once I became familiar with the IC, it’s been fun. It’s a very complex system, and very unlike any other chain I developed for before, but it has great potential since it can scale so massively and has a lot of computing power and storage capacity. It is a great experience to be able to get in close contact with the developers of such a large project and to be able to offer input and suggestions and actually be heard.

5 Likes

Check out our ic.community announcement! In that post, we describe our Perun channel protocol and give some more insights.

1 Like