  The General Purpose Atomic Crosschain Transaction protocol allows composable
programming across multiple Ethereum blockchains. It allows for inter-contract
and inter-blockchain function calls that are both synchronous and atomic: if
one part fails, the whole call execution tree of function calls is rolled back.
The protocol operates on existing Ethereum blockchains without modification. It
works for both public permissioned and consortium blockchains. Additionally,
the protocol is expected to work across heterogeneous blockchains other than
Ethereum. This paper describes the protocol, analyses it in terms of Gas usage
and Finalised Block Periods for three scenarios: reading a value from one
blockchain to another, writing a value from one blockchain to another, and a
trade finance system involving five contracts on five blockchains with a
complex call execution tree, and provides an initial security analysis that
shows that the protocol has Safety and Liveness properties.
