Secondary Key-Pair Statement

Generation Process

We use ed25519 to generate the secondary key-pair (for more information on ed25519, please refer to https://ed25519.cr.yp.to/) on user's client device and the secret key will be only stored on user's device. Then we will prompt the user to sign the following message with their EVM address.

I am declaring to use the key "0x1867998e827d10d4482e3f49d8ac68c17f29f9588c9b04e84ea2e3059e1f9958" as my signing key of engagement data for "0x7e031555600E59f37dDE3Bb9C5D8205c61796a0D".

Then we will upload the original message and signature on Arweave. After that, the client will use the secondary key-pair to sign the engagement data without prompting the user every time.

Key Retention

As this key-pair will not be used to do any on-chain transaction. It is safe to discard the key-pair any time. Users may choose to declare new key-pair while still be able to verify the existing data.

Data Schema

Parameter Definition

Parameter
Definition

message

The statement message which the user is signing. It is in free-text format and should contain the public key and connected address.

address

The address of the user

address_type

The type of the above address, right now, "evm" is supported.

secondary_key

The proxy key used in the statement

signature

The personal sign of the message using the address

secondary_signature

The signature using secondary_key for the entire message, more details in the Signature Generation Process below

provider

The name of SDK or software for making this statement

version

The version of SDK or software for making this statement

Example

{
  "message": "I am declaring to use the key \"0x89a04eb167a482659f1b8e0e8c597f69f5b1d4e96652feccf4b01710a45ac6c8\" as my signing key of engagement data for \"0xF2FCeCEacA2bDC9781fe920Af9Cdc20dB2cea00D\".",
  "address": "0xF2FCeCEacA2bDC9781fe920Af9Cdc20dB2cea00D",
  "address_type": "evm",
  "secondary_key": "0x89a04eb167a482659f1b8e0e8c597f69f5b1d4e96652feccf4b01710a45ac6c8",
  "signature": "0x39a95d8debdc1540b5329ca6ffca420a0e2a7e7a017ebe1b192441dfa80ee4a571eb3bb0b3ca0abab4eccf473d52c734af390e8e6247186b86c97cd97a86f4c81b",
  "secondary_signature": "0xd8b7dad42578ce3800340c635c4286134f13727f0250aea8e3450b68abb05a68ffff397444e01ea085d02937b3534afd8b9a05c18bd8c83bdc412523312f040e",
  "provider": "readon.me",
  "version": "1.0.01.beta"
}

Signature Generation Process

We need to generate two signatures in this statement

  1. personal_sign (EIP-191) on the "message", the result will be stored in the signature field.

  2. ed25519 signature on the "message" using secondary_key, the result will be stored in the secondary_signature field.

Statement API

Please refer to the API section for statement related API.

Last updated