论文标题

Prisma:一种无层语言,用于在分散应用程序中执行合同客户协议(扩展版)

Prisma: A Tierless Language for Enforcing Contract-Client Protocols in Decentralized Applications (Extended Version)

论文作者

Richter, David, Kretzler, David, Weisenburger, Pascal, Salvaneschi, Guido, Faust, Sebastian, Mezini, Mira

论文摘要

分散的应用程序(DAPP)由智能合约组成,这些合同在区块链和对当事方进行建模的客户端运行。 DAPP用于建模财务和法律业务功能。如今,合同和客户被写成单独的程序(使用不同的编程语言)通过发送和接收操作进行交流。这使得分布式程序尴尬地表达和理由,增加了客户合同界面中不匹配的可能性,这可能会被恶意客户利用,这可能会导致巨大的财务损失。在本文中,我们介绍了Prisma,这是一种用于无分散化应用程序的语言,在该应用程序中,合同及其客户的定义为一个单位,并将“属于属于属于”的属性”的发送和接收措施成对封装在单个直接风格的操作中,通过发送和接收派对,以不同的方式执行。这可以通过标准控制流来表达分布式程序流,并使不匹配的通信不可能。我们正式证明,在控制客户代码的攻击者的情况下,我们的编译器保留了程序行为。我们从系统地将Prisma与DAPP的主流和高级编程模型进行了比较,并为其表现力和性能提供了经验证据。

Decentralized applications (dApps) consist of smart contracts that run on blockchains and clients that model collaborating parties. dApps are used to model financial and legal business functionality. Today, contracts and clients are written as separate programs -- in different programming languages -- communicating via send and receive operations. This makes distributed program flow awkward to express and reason about, increasing the potential for mismatches in the client-contract interface, which can be exploited by malicious clients, potentially leading to huge financial losses. In this paper, we present Prisma, a language for tierless decentralized applications, where the contract and its clients are defined in one unit and pairs of send and receive actions that "belong together" are encapsulated into a single direct-style operation, which is executed differently by sending and receiving parties. This enables expressing distributed program flow via standard control flow and renders mismatching communication impossible. We prove formally that our compiler preserves program behavior in presence of an attacker controlling the client code. We systematically compare Prisma with mainstream and advanced programming models for dApps and provide empirical evidence for its expressiveness and performance.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源