The road to Babylon for AirGap

With the Babylon protocol upgrade for the Tezos protocol around the corner, AirGap has made sure to be ready to support the upgrade.

Published in
4 min readOct 14, 2019

--

Babylon is the second protocol upgrade after Athens to the Tezos protocol and brings many small and large changes in different areas. Notably for wallet users is the change that implicit accounts(tz1, tz2, tz3) become delegatable. Before Babylon a kt account had to be originated to perform a delegation.

The other various changes introduced with Babylon do not directly impact AirGap or its users.

👉 Updates for AirGap Wallet & AirGap Vault iOS and Android will be released as soon as the Babylon upgrade becomes active and will be accessible through the official app stores. Additionally the Android version will be available on GitHub.

What do the Babylon changes mean for new AirGap users

Delegatable implicit accounts are a good user experience improvement for wallet users. AirGap already handled a lot of the heavy lifting already before Babylon and supported one transaction delegations resulting in a only a small change from the perspective of an AirGap user. New users will now only see their tz1 account and use it for delegation instead of having a tz1 andkt1 account.

For existing AirGap users

Users that have created a delegation with AirGap only have to take action if they want to redelegate their XTZ to another baker, for this we provide the migration path to transfer the XTZ from the kt1 to the tz1 account.

👉 Transactions from and to the kt1account are still supported.

For developers

With the switch to the Babylon upgrade existing originated kt1 accounts will be migrated and given the manager.tz script. The open source Typescript library airgap-coin-lib used by both AirGap apps has implemented the interaction with the manager.tz contract for spend(transfer) operations.

const code: string =
'ff' + // 0xff (or any other non-null byte): presence flag for the parameters (entrypoint and argument)
'02' + // 0x02: tag of the "%do" entrypoint
hexArgumentLength + // <4 bytes>: length of the argument
'02' + // 0x02: Michelson sequence
hexSequenceLength + // <4 bytes>: length of the sequence
'0320' + // 0x0320: DROP
'053d' + // 0x053d: NIL
'036d' + // 0x036d: operation
'0743' + // 0x0743: PUSH
'035d' + // 0x035d: key_hash
'0a' + // 0x0a: Byte sequence
'00000015' + // 0x00000015: Length of the sequence (21 bytes)
hexDestination + // <21 bytes>: <destination>
'031e' + // 0x031e: IMPLICIT_ACCOUNT
'0743' + // 0x0743: PUSH
'036a' + // 0x036a: mutez
hexAmount + // <amount>: Amout to be transfered
'034f' + // 0x034f: UNIT
'034d' + // 0x034d: TRANSFER_TOKENS
'031b' // 0x031b: CONS
// tslint:enable:prefer-template

const spendOperation: TezosSpendOperation = {
kind: TezosOperationType.TRANSACTION,
fee: '2941',
gas_limit: '26283',
storage_limit: '0',
amount: '0',
counter: counter.toFixed(),
destination: destinationContract,
source: address,
code
}

The full code for the this can be found here https://github.com/airgap-it/airgap-coin-lib/tree/master/src/protocols/tezos.

As always we appreciate any feedback and will gladly answer questions.

Interested in AirGap? Stay in touch.

Telegram | GitHub | Website | Twitter | Reddit

--

--