Terra Kotlin SDK

The Terra Software Development Kit (SDK) in Kotlin is a simple library toolkit for building software that can interact
with the Terra blockchain and provides simple abstractions over core data structures, serialization, and API request generation.
🚧 Under heavy construction! 🚧
terra.kt is refactoring for applying protobuf and grpc.
Currently, you can only use legacy amino format with lcd.
Features
- Wallet Tools (e.g. signature verification)
- Amino
- LCD, FCD Client
- Sign with amino format
- Tools for server
Backlog
- grpc and new lcd endpoints with protobuf
- Support another platform (iOS / Android)
- Multisig
- Remote signature (e.g. Hashicorp Vault plugin)
Installation (w/ Gradle)
dependencies {
implementation("money.terra:sdk-amino:$terraSdkVersion")
implementation("money.terra:wallet:$terraSdkVersion")
implementation("money.terra:messages:$terraSdkVersion")
implementation("money.terra:client-rest:$terraSdkVersion")
implementation("money.terra:sdk-tools:$terraSdkVersion")
}
Usage
Getting blockchain data
dependencies {
implementation("money-terra:client-rest:$terraSdkVersion")
}
val client: TerraRestClient = TerraLcdClient("bombay-12", "https://bombay-lcd.terra.dev")
val deferredResult: Deferred<Result<Coin>> = client.marketApi.estimateSwapResult(Uint128("10000"), "uluna", "ukrw")
val result: Coin = deferredResult.await().result
println("uluna can be swapped for $result")
Broadcasting transactions
dependencies {
implementation("money.terra:sdk-amino:$terraSdkVersion")
}
Signing transactions
dependencies {
implementation("money.terra:wallet:$terraSdkVersion")
implementation("money.terra:sdk-amino:$terraSdkVersion") {
exclude("money.terra", "client-rest")
}
}
val mnemonic = "..."
val wallet = TerraWallet.fromMnemonic(mnemonic)
val signData = TransactionSignData(
chainId = "bombay-12",
accountNumber = 0u,
sequence = 0u,
fee = Fee(200000u, listOf(Coin(Uint128(), ))),
= listOf(SendMessage(wallet.address, receiveWallet, listOf(Coin(Uint128(),