Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

TokenScript - Attestation

This repository host the attestation libraries as part of TokenScript. Discussion goes to the forum

You can always use this project in your own code through Maven central, by adding the following dependency in your POM:


This repository's library serves 3 use-cases of attestations.

Use-case Description Protocol Cmd Demo
Identifier attestation Identifies a person by their Internet identifier such as Twitter Handle and email address. See below
Cheque Cheque: a signed message allows the beneficiary to perform an action, such as withdrawing Ether. Send-token-by-identifier demo.
Attestation as token An attestation that can be used as a non-fungible token.

How is the code organised?

The code is not compartmentalised by use-cases, since they share common components. We provide the common components as library, then, for each use-case, a commandline utility.

Since in most cases these attestations are used on the web, Web-developers should be more interested in attestations being implemented as part of token-neogotiation instead of the basic commandline form. Therefore, this repository should be more of interest by the protocol developers. Our JavaScript based token negotiation implementation is at the token-negotiator repo.

Together with repos that uses the library code, in total we maintain 4 repos. The relationship between these 4 repos are demonstrated here. This one is the first (the upper-left one).

various repos for components


You need the following installed:

  • JDK (version 11 or higher)
  • Gradle (version 7.1.1 is used by our devs)
  • node.js (version 15 is used by our devs)

Once you have them installed, run:

$ gradle build

The build script will run a few tests, resulting a few pem files created in build/test-results/ directory.

Try it yourself

To create a jar file for running the demo, run:

$ gradle shadowJar

Which will create a jar file that you can run in the commandline


There is a walk-through to use the functionalities provided by this library through commandline: commandline cheque demonstration and the commandline EIP712 attestation demonstration

Organisation of this repo

This repository has the following content:

data-modules :the data modules definitions used in this project

src :the implementation of the attestation and protocols. We use a Java-Solidity model for quick prototyping - testing.

ethereum/lib : lib for smart contracts which uses attestations

ethereum/issuers : example smart contracts used by issuers, for example, revocation list management.

ethereum/trustlist : members of trustlists to be adopted by smart contracts

ethereum/experiments : work not in the published specifications

ethereum/example-james-squire : an example to be used in your projects which requires attestations

paper : the paper behind the design of this project. The current version there is dated (2018) and doesn't reflect the new work in the last a few years. The current focus is the cheque/attestation protocol

ERC publications

ERC's related to this stream of work are:

ERC1386, ERC1387 & ERC1388