Skip to content

CosmosSwift/swift-mint

Repository files navigation

CosmosSwift

Swift5.2+ platforms

Build blockchain application states in Swift on top of the Tendermint consensus. This can be combined with Swift ABCI, which allows to build ABCI Servers in Swift to communicate with a Tendermint consensus.

This is work in progress.

The current focus is to provide the structures required to store the state, namely Merkle trees (in this repository) and iAVL+ trees (in https://github.com/cosmosswift/swift-iavlplus).

We are using the Go Tendermint codebase as a starting point, and implementing the Swift code in a Swifty way.

Installation

Requires Swift 5.2.x, on MacOS or a variant of Linux with the Swift 5.2.x toolchain installed.

git clone https://github.com/cosmosswift/swift-mint.git
cd cosmosswift
swift build

In your Package.swift file, add the repository as a dependency as such:

import PackageDescription

let package = Package(
    name: "MyCosmosSwiftApp",
    products: [
        .executable(name: "MyCosmosSwiftApp", targets: ["MyCosmosSwiftApp"]),
    ],
    dependencies: [
        .package(url: "https://github.com/cosmosswift/swift-mint.git", from: "0.3.0"),
    ],
    targets: [
        .target(name: "MyCosmosSwiftApp", dependencies: ["Merkle"]),
    ]
)

Other than use the ProofOperatorProtocol, there is not much practical use to this repo as of now.

In the coming milestone, we will add the following capabilities:

Getting Started

  1. import CosmosSwift

  2. Compile and run

Development

Compile:

  1. run swift build

Documentation

The docs for the latest tagged release are always available at https://katalysis.gitlab.io/open-source/cosmosswift/.

Questions

For bugs or feature requests, file a new issue.

For all other support requests, please email opensource@katalysis.io.

Changelog

SemVer changes are documented for each release on the releases page.

Contributing

Check out CONTRIBUTING.md for more information on how to help with CosmosSwift.

Contributors

Check out CONTRIBUTORS.txt to see the full list. This list is updated for each release.