Try   HackMD

W-OTS Migration Addresses

Summary

Starting with Chrysalis Part 2, the IOTA protocol will remove support for W-OTS signatures and addresses. As such, there needs to be a migration process of moving funds from W-OTS addresses in the old network to Ed25519 in the new network.
The proposed solution involves moving funds to a legacy address uniquely generated from the desired target Ed25519 address. This documents describes how this migration addresses are computed.

Detailed design

Generating the 81-tryte migration address

According to Draft RFC-8 an Ed25519 address A consists of 32 raw bytes. This needs to be converted to a 81-tryte address:

  • Compute the BLAKE2b-256 hash H of A.
  • Append the first 4 bytes of H to A, resulting in 36 bytes.
  • Convert A to trytes using the b1t6 encoding (as described in RFC-15). This results in Atri consisting of 72 trytes.
  • Prepend the 8-tryte prefix TRANSFER to Atri.
  • Finally, pad Atri with the single tryte 9 to get a legacy 81-tryte address.

Since Atri is an arbitrary address generated without any underlying private key, it will be practically impossible to access funds on the address and, thus, those funds are effectively burned.
The 9-tryte address checksum can be computed and added as usual.

Decoding the 81-tryte migration address

  • Valid migration addresses start with TRANSFER and end with 9.
  • The 72 trytes after TRANSFER represent a valid b1t6 encoding of 36 bytes.
  • The first 32 bytes of the result are called A and the last 4 bytes H.
  • Check that H matches the first 4 bytes of the BLAKE2b-256 hash of A.
  • The encoded Ed25519 address is A.

Example

  • Ed25519 address (32-byte): 6f9e8510b88b0ea4fbc684df90ba310540370a0403067b22cef4971fec3e8bb8
  • Migration address including 9-tryte checksum (90-tryte): TRANSFERCDJWLVPAIXRWNAPXV9WYKVUZWWKXVBE9JBABJ9D9C9F9OEGADYO9CWDAGZHBRWIXLXG9MAJV9RJEOLXSJW

Example Go implementation in wollac/iota-crypto-demo:

Open Questions

  • Any alternative prefix is fine. However it should make sense logically and there should not be too many addresses currently starting with this prefix.