https://github.com/datachainlab/cross
A framework empowers the development of smart contracts that support cross-chain transactions.
https://github.com/datachainlab/cross
blockchain cosmos cross-chain-communication ibc interoperability tendermint
Last synced: 3 months ago
JSON representation
A framework empowers the development of smart contracts that support cross-chain transactions.
- Host: GitHub
- URL: https://github.com/datachainlab/cross
- Owner: datachainlab
- License: other
- Created: 2020-01-30T10:27:09.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-05-05T02:29:03.000Z (over 2 years ago)
- Last Synced: 2025-05-24T17:45:00.258Z (4 months ago)
- Topics: blockchain, cosmos, cross-chain-communication, ibc, interoperability, tendermint
- Language: Go
- Homepage: https://datachainlab.github.io/cross-docs/
- Size: 1.61 MB
- Stars: 48
- Watchers: 3
- Forks: 22
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Cross Framework
![]()
Cross is a framework that enables distributed transactions over multiple blockchains. It is implemented as [Cosmos module](https://github.com/cosmos/cosmos-sdk).
Cross provides several key features:
- **Cross-chain transaction support** - supports [Atomic Commit Protocol](https://datachainlab.github.io/cross-docs/docs/architecture/atomic-commit-protocol/) between multiple blockchains.
- **General application support** - provides a framework to enable the support of "general" application as smart contract ("general" application means Account model like Ethereum, not UTXO model). Using this framework, smart contract developers are not forced to implement Atomic Commit and locking protocol at each contract development.
- **Use [IBC](https://github.com/cosmos/ibc) as messaging layer** - realize trustless communications between multiple chains.## Documents
Please see [here](https://datachainlab.github.io/cross-docs/).
## Related Projects
### Library
- https://github.com/datachainlab/cross-solidity: A solidity implementation for Ethereum and EVM chains
- https://github.com/datachainlab/cross-cdt: A store that supports efficient concurrent operations
- https://github.com/hyperledger-labs/yui-docs: YUI enables interoperability between multiple heterogeneous ledgers### Demo
- https://github.com/datachainlab/fabric-tendermint-cross-demo: An E2E demo project using Cross between Hyperledger Fabric and Tendermint.
## Motivation
It is difficult to atomically execute general smart contract on multiple networks. One such example is [Train-And-Hotel problem](https://github.com/ethereum/wiki/wiki/Sharding-FAQ#what-is-the-train-and-hotel-problem). If we can convert Train and Hotel reservation rights into NFT that can be moved to any chain using Two-way peg method such as [ics-020](https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer), it may be possible to solve this problem simply by doing atomicswap on a single chain. However, if each Token's metadata (e.g. a whitelist of owner) depends on other states of its origin chain and common state is referenced by other contract states, it is difficult to move between chains.
To solve such problem, we need to be able to execute All or Nothing reservation contracts that exist in two different chains, rather than pegging to single blockchain. This is similar to Atomic commit protocol for distributed systems. To achieve this, each contract's state machine needs to lock the state required for "commit" at "prepare" phase. But it is not safe to enforce these requirements on each contract developers. Therefore, we decided to implement Atomic commit protocol in compliance with ics-004 and create a datastore that transparently meets the required locking protocol.
## Maintainers
- [Jun Kimura](https://github.com/bluele)
- [Ryo Sato](https://github.com/3100)## Contact
Please contact us [here](https://form.run/@datachain-contact-en).