Yuki Nishida 0001

dblp:36/10522-1 · DBLP profile ↗
← Back
7ranked-venue papers
4as first author
3since 2021 · last 2024
0000-0001-5941-6770ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 7 · 4 first-author · 3 since 2021Security and privacy · 1 · 1 first-author · 1 since 2021Theory of computation · 1 · 1 first-author
YearPublicationVenuePosition
2024 iCon: Automated Verification of Inter-Transaction Properties in Tezos Smart Contracts with Unknowns
abstract
Smart contracts play a critical role in blockchain applications, managing vast amounts of valuable assets. However, they are often vulnerable to attacks due to the inherent difficulties in modifying their code once deployed. Existing security analysis tools and verifiers primarily focus on single-contract verification, while many real-world blockchain applications involve multiple contracts and transactions. In this paper, we introduce an automated verifier, iCon, for inter-transaction properties of smart contracts on the Tezos blockchain platform. iCon is based on our program logic, which verifies inter-transaction properties in the presence of both known and unknown contracts. We present an abstraction technique for unknown contracts and propose a proof technique to ensure that an inter-transaction property holds for any existence of unknown contracts. The proof technique supports the correctness of our verification approach. We have implemented iCon on top of the Why3 verification framework, demonstrating its effectiveness through several case studies, including the decentralized exchange service Dexter2, of which a previous version had a flaw in its implementation.
Yuki Nishida 0001, Kohei Suenaga, Atsushi Igarashi
ICBC1
2024 Law and Order for Typestate with Borrowing
abstract
Typestate systems are notoriously complex as they require sophisticated machinery for tracking aliasing. We propose a new, transition-oriented foundation for typestate in the setting of impure functional programming. Our approach relies on ordered types for simple alias tracking and its formalization draws on work on bunched implications. Yet, we support a flexible notion of borrowing in the presence of typestate. Our core calculus comes with a notion of resource types indexed by an ordered partial monoid that models abstract state transitions. We prove syntactic type soundness with respect to a resource-instrumented semantics. We give an algorithmic version of our type system and prove its soundness. Algorithmic typing facilitates a simple surface language that does not expose tedious details of ordered types. We implemented a typechecker for the surface language along with an interpreter for the core language.
Hannes Saffrich, Yuki Nishida 0001, Peter Thiemann 0001
Proc. ACM Program. Lang.2
2021 Helmholtz: A Verifier for Tezos Smart Contracts Based on Refinement Types
abstract
Abstract A smart contract is a program executed on a blockchain, based on which many cryptocurrencies are implemented, and is being used for automating transactions. Due to the large amount of money that smart contracts deal with, there is a surging demand for a method that can statically and formally verify them. This tool paper describes our type-based static verification tool Helmholtz for Michelson, which is a statically typed stack-based language for writing smart contracts that are executed on the blockchain platform Tezos. Helmholtz is designed on top of our extension of Michelson’s type system with refinement types. Helmholtz takes a Michelson program annotated with a user-defined specification written in the form of a refinement type as input; it then typechecks the program against the specification based on the refinement type system, discharging the generated verification conditions with the SMT solver Z3. We briefly introduce our refinement type system for the core calculus Mini-Michelson of Michelson, which incorporates the characteristic features such as compound datatypes (e.g., lists and pairs), higher-order functions, and invocation of another contract. Helmholtz successfully verifies several practical Michelson programs, including one that transfers money to an account and that checks a digital signature.
Yuki Nishida 0001, Hiromasa Saito, Akira Kawata, Jun Furuse, Kohei Suenaga, Atsushi Igarashi
TACAS (2)1
2019 Manifest Contracts with Intersection Types
Yuki Nishida 0001, Atsushi Igarashi
APLAS1
2018 Nondeterministic Manifest Contracts
abstract
We study a manifest contract system---a typed calculus of higher-order contracts where contracts are tightly integrated into a refinement type system---for a functional language with nondeterministic choice. The extension is not trivial, especially in the presence of dependent function types, because a naive extension would lead to inconsistent type equivalence, which makes contract information in refinement types meaningless.
Yuki Nishida 0001, Atsushi Igarashi
PPDP1
2017 Sharper and Simpler Nonlinear Interpolants for Program Verification
Takamasa Okudono, Yuki Nishida 0001, Kensuke Kojima, Kohei Suenaga, Kengo Kido, Ichiro Hasuo
APLAS2
2015 Manifest Contracts for Datatypes
abstract
We study algebraic data types in a manifest contract system, a software contract system where contract information occurs as refinement types. We first compare two simple approaches: refinements on type constructors and refinements on data constructors. For example, lists of positive integers can be described by {l:int list | for_all (lambda y. y > 0) l} in the former, whereas by a user-defined datatype pos_list with cons of type {x:int | x > 0} X pos_list -> pos_list in the latter. The two approaches are complementary: the former makes it easier for a programmer to write types and the latter enables more efficient contract checking. To take the best of both worlds, we propose (1) a syntactic translation from refinements on type constructors to equivalent refinements on data constructors and (2) dynamically checked casts between different but compatible datatypes such as int list and pos_list. We define a manifest contract calculus to formalize the semantics of the casts and prove that the translation is correct.
Taro Sekiyama, Yuki Nishida 0001, Atsushi Igarashi
POPL2